私はEF4.1 POCOを使用しています。複数のレコードを効率的に削除する
私は彼らが私は現在のために生成されたSQLは恐ろしいです
var parent = (from p in Parents
where p.ParentId == parentId
select p).FirstOrDefault();
while (parent.Children.Count > 0)
{
Children.Remove(parent.Items[0]);
}
Context.SaveChanges();
を持って
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new ParentConfiguration());
}
internal class ParentConfiguration: EntityTypeConfiguration<Parent>
{
internal ParentConfiguration()
{
HasMany(r => r.Children).WithRequired(o => o.Parent);
}
}
で私のDbContextにリンクされている2つのテーブル
[Table("Parent")]
public class Parent
{
public int ParentId { get; set; }
/.. Other fields ../
public virtual List<Child> Children{ get; set; }
}
[Table("Child")]
public class Child
{
public int ChildId { get; set; }
/.. Other fields ../
public virtual Parent Parent { get; set; }
}
を持っています。
親のすべての子をすべて削除せずに削除する関数を作成したいとします。 SQLでは、これは非常に簡単なSQL呼び出しで行うことができます。
DELETE FROM Children WHERE ParentId = @ParentId
これはEFで可能ですか、この関数にSQL/Stored Procsを使用する必要があります。
ありがとう、私はこれが事実だと感じました。 – Magpie