Entity framework 如何使用CodeFirst(EntityFramework,Microsoft)生成可为null的复杂列
我有一个如下的定义,本质上,我想在EmailAccount类中创建它: 公共电子邮件用户?EmailUserAccountInfo{get;set;} 编译器给了我一个关于不可为null的类型的错误。我的目标是让EmailUser成为可选的。我有点困惑,因为我可以直接设置EmailUserAccountInfo=nullEntity framework 如何使用CodeFirst(EntityFramework,Microsoft)生成可为null的复杂列,entity-framework,entity-framework-4.1,ef-code-first,Entity Framework,Entity Framework 4.1,Ef Code First,我有一个如下的定义,本质上,我想在EmailAccount类中创建它: 公共电子邮件用户?EmailUserAccountInfo{get;set;} 编译器给了我一个关于不可为null的类型的错误。我的目标是让EmailUser成为可选的。我有点困惑,因为我可以直接设置EmailUserAccountInfo=null var r = new EmailAccount() { EmailUs
var r = new EmailAccount()
{
EmailUserAccountInfo = null,
Id = 1001
};
public class EmailAccount
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public EmailUser EmailUserAccountInfo { get; set; }
}
public class EmailUser
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public EmailAccount EmailAcount { get; set; }
public string EmailAddress { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string ZipCode { get; set; }
public string City { get; set; }
public string State { get; set; }
public int Temperature { get; set; }
public string WeatherString { get; set; }
public ImageDetail ImageOfUser { get; set; }
}
如果添加外键并将其标记为可空,则可以执行此操作:
public class EmailAccount
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
// Foreign key
public int? EmailUserAccountInfoId { get; set; }
// Navigation property
public virtual EmailUser EmailUserAccountInfo { get; set; }
}
请首先参阅有关代码命名约定的内容。(向下滚动至关系约定)如果添加外键并将其标记为空,则可以执行此操作:
public class EmailAccount
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
// Foreign key
public int? EmailUserAccountInfoId { get; set; }
// Navigation property
public virtual EmailUser EmailUserAccountInfo { get; set; }
}
请首先参阅有关代码命名约定的内容。(向下滚动至关系约定)谢谢Tsushin,你能解释一下虚拟关键词对数据库的含义吗?另外,我对添加外键列是否显式产生影响也有一些疑问。添加外键显式允许您将其标记为null-able,从而指示EF关系为零对一。至于虚拟关键字,请参阅Thank Tsushin,你能解释一下虚拟关键字对于数据库的含义吗?此外,我还怀疑是否显式添加外键列会产生影响。显式添加外键允许将其标记为可空,从而指示EF关系为零对一。至于虚拟关键字,请参阅