过去我在开发机器之间进行交换时遇到了问题(1,2,3)和实体框架,所以我希望得到一些简单的东西 - 和 - 与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会生成无法构建的代码以及如何修复它?
答案 0 :(得分:1)
看起来这是一个已知的错误: SQL Server scaffolding generates invalid anonymous types for indexes (rc1-final) #3847 ,由&#34;混合索引引起,这些索引具有相同的名称,但位于不同的表格上#34;。最近提交的里程碑实体框架7 RC2(roadmap)修复了此问题。
答案 1 :(得分:0)
错误很明显..你不能拥有同名的多个属性...... 将您的最后一行更改为:
entity.HasIndex(e => new {
CreatedAt = e.CreatedAt,
Name2 = e.CreatedAt,
Name3 = e.CreatedAt,
Name4 = e.CreatedAt }).HasName("IX_CreatedAt");