2011-10-12 137 views
8

我有以下类流利的API(WithRequiredDependent和WithRequiredPrincipal):EF代码优先 -

public class User 
{ 
    public Guid Id { get; set; } 
    public string Name { get; set; } 
    public Couple Couple { get; set; } 
} 

public class Couple 
{ 
    public Guid Id { get; set; } 
    public User Groom { get; set; } 
    public User Bride { get; set; } 
} 

要点:

  1. BrideGroom属性是必需的
  2. 一-to一对一关系
  3. User类,它是Couple需要

的DbContext在OnModelCreating

modelBuilder.Entity<User>().HasRequired(u => u.Couple).WithRequiredPrincipal(); 
modelBuilder.Entity<Couple>().HasRequired(u => u.Bride).WithRequiredDependent(); 
modelBuilder.Entity<Couple>().HasRequired(u => u.Groom).WithRequiredDependent(); 

但我不能要求!

所有的Fileds与数据库中的空!

我如何在数据库中的字段不为空? 如果可能的话使用API​​ Flient

回答

5

它应该是这样的:

modelBuilder.Entity<User>().HasRequired(u => u.Couple).WithRequiredDependent(); 
modelBuilder.Entity<Couple>().HasRequired(u => u.Bride).WithRequiredDependent(); 
modelBuilder.Entity<Couple>().HasRequired(u => u.Groom).WithRequiredDependent(); 

WithRequiredDependent如何运作:配置要需要的关系:没有要求在关系的另一端的导航属性。正在配置的实体类型将是依赖项,并且包含主体的外键。关系目标的实体 将成为关系中的主体。


含义:让我们考虑您的第一行代码在这里。它创建被配置在实体的外键(用户)使它依赖,使关系的另一面(夫妇主要


重要:唐你认为你想要的配置会产生僵局吗?我没有测试过上面的代码,但是这个配置对我来说似乎是一个僵局,所以我不确定EF是否允许你创建它。用户必须需要一对情侣,而且情侣必须需要同一个用户。