我有一个非常简单的模型:
class Bag
{
public int Id { get; set; }
public ICollection<RandomThing> RandomThings { get; set; }
}
class RandomThing
{
public int Id { get; set; }
public String Description{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的上下文OnModelCreating(在EF 6中)是这样的:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Bag>()
.ToTable("Bag")
.HasMany(x => x.RandomThings).WithRequired(x => x.Bag).WillCascadeOnDelete();
modelBuilder.Entity<RandomThing>().ToTable("RandomThing");
}
Run Code Online (Sandbox Code Playgroud)
据我所知,没有相同的方法可以做到这一点.我知道不支持级联删除.但是,我想知道,在我的代码示例中定义的一对多关系建模的最佳方法是什么?似乎所有这些东西已经消失(或者尚未实施).
我已经看到了一个与我想要的完全一样的例子(这里)DbContext,但它实际上是错误的并且不起作用.如果我尝试下载该源代码,设置我的环境,并在带有帖子的博客实体上进行保存,那些帖子就不会像人们想象的那样得到保存.
这有什么变通方法吗?
用户可以拥有1个或0个帐户
public class User
{
public int UserId { get; set; }
public string Name { get; set; }
public string Email { get; set; }
public Account Account { get; set; }
}
public class Account
{
public int AccountId { get; set; }
public DateTime CreatedDateTime { get; set; }
public User User { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这是使用Entity Framework 6的流利的api代码
public class ClassDbContext: DbContext
{
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<User>()
.HasOptional(s => s.Account)
.WithRequired(ad => …Run Code Online (Sandbox Code Playgroud)