相关疑难解决方法(0)

EF6 CodeFirst我的[Key] Id列不会像标识列那样自动递增

我有几个类需要从一个包含Id的公共基类派生.暂时忽略除了其中一个之外的其他所有内容,让我们说:

public class MyBase {
   [Key]
   public int Id { get; set; } 
}
public class MyName : MyBase {
   public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我的上下文(DataContext)看起来像这样:

public DbSet<MyName>MyNames { get; set; }

// to avoid having EF make a MyBases table and instead map 
// MyBase.Id into MyNames and my other derived classes I do this ...

protected override void OnModelCreating((DbModelBuilder modelBuilder) {
   modelBuilder.Entity<MyBase>()
            .Property(c => c.Id)
            .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);

   modelBuilder.Entity<MyName>()
            .Map(m => {
                    m.MapInheritedProperties();
                    m.ToTable("MyNames");
                });
}
Run Code Online (Sandbox Code Playgroud)

生成的数据库,当我启用迁移,添加迁移初始化和更新数据库时,我得不到名为MyBases的表,而是在MyNames中获取Id列 …

c# sql entity-framework code-first on-duplicate-key

12
推荐指数
1
解决办法
3万
查看次数

实体框架 - 使用多列索引作为标识符的种子AddOrUpdate

我试图使用该context.AddOrUpdate方法播种数据库,但问题是我需要根据多列索引使插入的数据唯一.

[Table("climbing_grades")]
public class ClimbingGrade : EntityBase
{
    /// <summary>
    /// The name of the climbing grade, e.g.: 7a, VII, etc.
    /// </summary>
    [Index("IX_Name_GradeType", 1, IsUnique = true)]
    public string Name { get; set; }

    /// <summary>
    /// Tries to display the average difficulty of the described grade.
    /// Matching the different grades can be difficult because its always
    /// a subjective rating and there exists no norm on converting grades.
    /// </summary>
    public double Difficulty { get; …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework seeding ef-code-first ef-migrations

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