kfu*_*ang 8 composite-key entity-framework-4.1
我刚刚使用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; }
}
Run Code Online (Sandbox Code Playgroud)
我收到这个错误:
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.
Run Code Online (Sandbox Code Playgroud)
但是,我可以使用像这样的Fluent API
modelBuilder.Entity<UserApplication>().HasKey(obj => new {obj.UserId, obj.ApplicationId });
Run Code Online (Sandbox Code Playgroud)
为什么EF没有拿起我使用注释定义的复合键?我很确定这曾经适用于较旧的EF 4.1.
适用于实体框架 6.1.3。我还添加了一个基本Application类,但按UserApplication原样使用(除了 DatabaseGenerat选项。生成了此 SQL:
CREATE TABLE [dbo].[UserApplication] (
[UserId] [int] NOT NULL,
[ApplicationId] [int] NOT NULL,
[SubscribedDate] [datetime] NOT NULL,
CONSTRAINT [PK_dbo.UserApplication] PRIMARY KEY ([UserId], [ApplicationId])
)
CREATE TABLE [dbo].[Application] (
[ApplicationId] [int] NOT NULL IDENTITY,
[Name] [nvarchar](max),
CONSTRAINT [PK_dbo.Application] PRIMARY KEY ([ApplicationId])
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1702 次 |
| 最近记录: |