我在数据库中有表继承:
Ticket{TicketId, TicketTypeId, CreatedBy, Title, Description etc.}
UserInfo{TicketId etc.}
TicketId
是主键自增。表UserInfo
继承Ticket
表,所以TicketId
实际上UserInfo
是从表FK
。
我在 EF 中有模型:TicketId
Ticket
public abstract class Ticket
{
[Key]
public int TicketId { get; set; }
public int TicketTypeId { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public Guid CreatedBy { get; set; }
public virtual User User { get; set; }
}
public class UserInfo :Ticket
{
...
}
当我尝试将新的 UserInfo 对象插入数据库时,我写道:
User u = context.Users.Find(Membership.GetUser().ProviderUserKey);
UserInfo o = new UserInfo();
o.CreatedBy = u.UserId;
o.Description = "First EF user info to database!";
o.TicketTypeId = 1;
o.Title = "First User Info EF";
context.Tickets.Add(o);
context.SaveChanges();
但是应用程序在 SaveChanges() 上中断。
我收到以下错误:
{“无效的列名'User_UserId'。”}
更新
我更改CreatedBy
为UserId
并传递了此错误,但现在这里还有两个问题:
我将 UserInfo 保存到数据库但 UserInfo 表中没有任何内容。我以为EF可以在保存后添加这个字段?
数据库中的此票证表绑定到 UserInfo 但它也通过 TicketID 绑定到数据库中的几个表但是当我尝试保存对象 UserInfo 时出现此错误:
{"The INSERT statement conflicted with the FOREIGN KEY
constraint \"FK_Tickets_Groups\". The conflict occurred in database \"db_Example\", table \"dbo.Groups\", column 'TicketId'.\r\nThe statement has been terminated."}
所以为了保存这个,我目前删除了除 UserInfo 之外的表引用。EF可以处理这种情况吗?