我刚刚使用 NuGet 升级到最新的 EF 4.1 代码优先,现在收到有关映射的错误。
我有这门课
public class UserApplication
{
[Key, Column(Order = 0)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int UserId { get; set; }
[Key, Column(Order = 1)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int ApplicationId { get; set; }
[ForeignKey("ApplicationId")]
public virtual Application Application { get; set; }
public DateTime SubscribedDate { get; set; }
}
我收到此错误:
System.Data.Edm.EdmEntityType: : EntityType 'UserApplication' has no key defined. Define the key for this EntityType.
System.Data.Edm.EdmEntitySet: EntityType: EntitySet 'UserApplications' is based on type 'UserApplication' that has no keys defined.
不过,我可以使用 Fluent API 让它工作,如下所示
modelBuilder.Entity<UserApplication>().HasKey(obj => new {obj.UserId, obj.ApplicationId });
为什么 EF 没有获取我使用注释定义的复合键?
我非常确定这曾经适用于较旧的 EF 4.1。
我已经解决了这个问题。我刚刚添加了额外的关键列:
public class AlbumUser
{
public Album Album
{
get;
set;
}
public IdentityUser User
{
get;
set;
}
[Key]
[Column(Order = 0)]
[StringLength(128)]
public string UserId
{
get;
set;
}
[Key]
[Column(Order = 1)]
public int AlbumId
{
get;
set;
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)