实体框架7:匿名类型不能具有多个具有相同名称的属性

时间:2015-12-11 10:17:41

标签: entity-framework entity-framework-core

过去我在开发机器之间进行交换时遇到了问题(123)和实体框架,所以我希望得到一些简单的东西 - 和 - 与Entity Framework 7 RC1 Update 1一起运行,看看事情是否更容易。

我在本地复制了一个Azure数据库,然后使用了DNX命令

dnx ef dbcontext scaffold "Server=MYDESK;Database=mydatabase;Trusted_Connection=True;" EntityFramework.MicrosoftSqlServer --outputDir Models

这创建了数据模型类和上下文类。我检查了它,现在已经交换到另一台机器并检查了代码。在新机器上,它无法构建在实体框架7生成的代码中抛出错误:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Items>(entity =>
    {
        entity.ToTable("Items", "myapi");

        entity.HasIndex(e => new { e.CreatedAt, e.CreatedAt, e.CreatedAt, e.CreatedAt }).HasName("IX_CreatedAt");

最后一行的构建错误是“匿名类型不能具有多个具有相同名称的属性”。为什么Entity Framework 7会生成无法构建的代码以及如何修复它?

2 个答案:

答案 0 :(得分:1)

看起来这是一个已知的错误: SQL Server scaffolding generates invalid anonymous types for indexes (rc1-final) #3847 ,由&#34;混合索引引起,这些索引具有相同的名称,但位于不同的表格上#34;。最近提交的里程碑实体框架7 RC2roadmap)修复了此问题。

答案 1 :(得分:0)

错误很明显..你不能拥有同名的多个属性...... 将您的最后一行更改为:

    entity.HasIndex(e => new { 
                     CreatedAt = e.CreatedAt, 
                     Name2 = e.CreatedAt, 
                     Name3 = e.CreatedAt, 
                     Name4 = e.CreatedAt }).HasName("IX_CreatedAt");