did*_*man 1 entity-framework-ctp5
我有一个现有的数据库,我想迁移到EF CTP5.我遇到的问题是,当我插入现有数据时,我需要它移动保留当前身份主键以用于其他外键约束.
我想使用EF CTP5代码进行迁移,因此我不必编写大量SQL,甚至不必在SSIS包中包含它.
我试图使用sql语法:
SET IDENTITY_INSERT tableName ON
SET IDENTITY_INSERT tableName OFF
但是,当调用DbContext.SaveChanges()时,上述语法在不同的连接中发生,并且标识列由EF CTP5框架控制,即使在指定ID时也是如此.
是否有一种方法可以禁用或删除与以下类似的对象的身份约定,但是在运行时而不是在实例化数据库时:
public class BlogContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<StoreGeneratedIdentityKeyConvention>();
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢
您可以在字段上添加标识设置,如下所示:
在DbContext类的OnModelCreating中:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<ClassNameOfYourPOCO>().Property(p => p.IDFIELDNAME)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
}
Run Code Online (Sandbox Code Playgroud)
您可以像这样删除它:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<ClassNameOfYourPOCO>().Property(p => p.IDFIELDNAME)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1978 次 |
| 最近记录: |