9

たとえば、次の 2 つのコード スニペットがあります。

public void Insert(IEnumerable<ManageGeofenceViewModel> geofences)
{
    var insertGeofences = new List<Geofence>();

    foreach(var geofence in geofences)
    {
        Geofence insertGeofence = new Geofence
        {
            name = geofence.Name,
            radius = geofence.Meters,
            latitude = geofence.Latitude,
            longitude = geofence.Longitude,
            custom_point_type_id = geofence.CategoryID
        };

        insertGeofences.Add(insertGeofence);

    }

    this.context.Geofences.InsertAllOnSubmit(insertGeofences);
    this.context.SubmitChanges();
}

public void Insert(IEnumerable<ManageGeofenceViewModel> geofences)
{
    foreach(var geofence in geofences)
    {
        Geofence insertGeofence = new Geofence
        {
            name = geofence.Name,
            radius = geofence.Meters,
            latitude = geofence.Latitude,
            longitude = geofence.Longitude,
            custom_point_type_id = geofence.CategoryID
        };
        this.context.Geofences.InsertOnSubmit(insertGeofence);
    }
    this.context.SubmitChanges();
}

最初のスニペットで submitchanges がループの外側で呼び出されたため、2 つのコード スニペットのデータベースへのトリップ回数はどちらが優れていますか?

4

2 に答える 2

-1

コーディング効率に焦点を当てた、このような便利な方法がたくさんあります。一度にデータベースに挿入したいエンティティのリストがある場合は、 を使用できますInsertAllOnSubmit。以下は、私のプロジェクトの 1 つの例です。

public void InsertAll(IEnumerable<MyClass> list)
    {
        DataContext.MyClasses.InsertAllOnSubmit<MyClass>(list);
        DataContext.SubmitChanges();
    }

このコードにより、1 行で複数のエンティティを DataContext に追加できます。追加した後、複数のデータベース呼び出しを回避して、一度に変更を送信できます。

于 2014-07-26T03:16:11.357 に答える