小编use*_*072的帖子

使用实体框架4.1创建复合主键

我有两个表ProjectsTask.Task是项目的弱实体,因此任务的复合主键是(ProjectId & TaskID).我尝试使用以下代码,但它给出了一个错误

无法在表'Tasks'中的可空列上定义PRIMARY KEY约束.

我正在使用代码优先的方法来创建表,我确保列不是null,但它仍然无法正常工作.请帮忙!

public class Task
{
    [ForeignKey("ProjectId")]
    public Project Project { get; set; }
    [Required]
    public int ProjectId { get; set; }

    //[Key, Column(Order = 1)]
    [Required]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public virtual int TaskID { get; set; }
    ...
}

//using FluentAPI
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);

    modelBuilder.Entity<Task>().HasRequired(p => p.Project);
    modelBuilder.Entity<Task>().HasKey(p => new { p.ProjectId, p.TaskID });

    modelBuilder.Entity<Project>()
           .HasRequired(e=> e.Employee)
           .WithMany()
            .WillCascadeOnDelete(false);
}
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc entity-framework-4

9
推荐指数
1
解决办法
2万
查看次数

标签 统计

asp.net-mvc ×1

entity-framework-4 ×1