b3n*_*b3n 10 .net c# entity-framework-4 ef-code-first
我正在尝试创建一个简单的实体框架代码第一个应用程序.我有这些课程:
public class User
{
public int UserId { get; set; }
public string Username { get; set; }
public virtual ActivationTicket ActivationTicket { get; set; }
}
public class ActivationTicket
{
public int ActivationTicketId { get; set; }
public virtual User User { get; set; }
public string Ticket { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
当我尝试创建一个新用户并将其保存到数据库(没有ActivationTicket的用户)时,我收到一个异常
INSERT语句与FOREIGN KEY约束"ActivationTicket_User"冲突.冲突发生在数据库"Test",表"dbo.ActivatioTickets",列'ActivationTicketId'中.该语句已终止.
我假设EF将User和ActivationTicket之间的映射视为1-1,但它应该是1-0..1
我该怎么做才能让它发挥作用?
ano*_*non 21
您将需要这样的映射规则:
modelBuilder
.Entity<User>()
.HasOptional<ActivationTicket>(u => u.ActivationTicket)
.WithOptionalPrincipal();
这将为您提供一个可以为空的UserId的ActivationTickets表.
@ b3n这应该足够了,至少在VS 2013中:
public class User
{
public int UserId { get; set; }
public string Username { get; set; }
public int? ActivationTicketId { get; set;}
public virtual ActivationTicket ActivationTicket { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这是重要的部分:
public int? ActivationTicketId { get; set;}
Run Code Online (Sandbox Code Playgroud)
这将在ActivasionTicket的"User"表中指定foreignkey,并定义它是可选的.
学分转到:http://forums.asp.net/t/1948351.aspx?更改+ 外语+关键词+不可导致+使用+代码+第一 栏#5554732
我有同样的问题,它立即为我工作.
另外作为注释,我用数据注释"[Key]"标记了所有主键.这可能是必要的,以使这项工作.
| 归档时间: |
|
| 查看次数: |
23092 次 |
| 最近记录: |