Entity framework 4 EF 4.3代码优先-如何设置默认值
我有一个这样的实体:Entity framework 4 EF 4.3代码优先-如何设置默认值,entity-framework-4,default-value,Entity Framework 4,Default Value,我有一个这样的实体: public class Part : Entity { public int Id { get; set; } public string Name { get; set; } public IEnumerable<VersionSection> VersionSections { get { return Sections.Where(s => s is Ver
public class Part : Entity
{
public int Id { get; set; }
public string Name { get; set; }
public IEnumerable<VersionSection> VersionSections
{
get
{
return Sections.Where(s => s is VersionSection).Cast<VersionSection>();
}
}
public virtual ICollection<Section> Sections { get; set; }
public Part()
{
this.Sections = new List<Section>();
}
}
公共类部分:实体
{
公共int Id{get;set;}
公共字符串名称{get;set;}
公共IEnumerable版本节
{
得到
{
返回节。其中(s=>s是VersionSection.Cast();
}
}
公共虚拟ICollection节{get;set;}
公共部分()
{
this.Sections=新列表();
}
}
当我创建此业务的Part following的新实例时,我想设置Sections集合的默认值:
- 创建零件时,应创建默认截面(Name=“Section 1”)。这不能删除
有什么想法吗?谢谢在创建实体时,没有什么简单易行的方法可以实现您所需要的。但是,可以在保存实体之前执行此操作
public class MyContextTest : DbContext
{
public override int SaveChanges()
{
var parts = ChangeTracker.Entries<Part>()
.Where(e => e.State == System.Data.EntityState.Added)
.Select(e => e.Entity);
foreach (var item in parts)
{
if (item.Sections == null)
item.Sections = new List<Section>();
item.Sections.Add(new Section { Name = "Section 1" });
}
return base.SaveChanges();
}
}
公共类MyContextTest:DbContext
{
公共覆盖int SaveChanges()
{
var parts=ChangeTracker.Entries()
.Where(e=>e.State==System.Data.EntityState.Added)
.选择(e=>e.Entity);
foreach(部分var项目)
{
如果(item.Sections==null)
item.Sections=新列表();
添加(新节{Name=“第1节”});
}
返回base.SaveChanges();
}
}