我使用EF6代碼優先,並且有一個User
類,它需要與其他用戶有傳入和傳出連接。連接也有屬性,所以我也有一個Connections
類。EF代碼優先:序列包含多個匹配元素
public class User
{
public int ID { get; set; }
// Other properties removed here to keep it simple
[InverseProperty("SourceUser")]
public virtual ICollection<Connection> OutgoingConnections { get; set; }
[InverseProperty("DestUser")]
public virtual ICollection<Connection> IncomingConnections { get; set; }
}
public class Connection
{
public int ID { get; set; }
// Other properties removed here to keep it simple
[InverseProperty("OutgoingConnections")]
public User SourceUser { get; set; }
[InverseProperty("IncomingConnections")]
public User DestUser { get; set; }
}
更新我的數據庫時出現以下錯誤。最初我沒有InverseProperty
屬性,所以我可以理解爲什麼EF不知道該怎麼做。文檔聽起來像這些屬性是我想要的 - 但它仍然無法正常工作。但也許我誤解了它。
我想用一個Users
表結束,和Connections
表所在的Connections
表有ID
,SourceUserID
,DestUserID
(很明顯,FK約束)。
任何想法?
指定'-Verbose'標誌來查看應用到目標數據庫的SQL語句 。應用顯式遷移: [201411192045091_InitialCreate]。應用顯式遷移: 201411192045091_InitialCreate。 System.InvalidOperationException: 序列在 System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer含有 System.Linq.Enumerable.SingleOrDefault [TSource](IEnumerable的
1 source, Func
2謂詞)多於一個的匹配元素。 <> c__DisplayClass250.b__247(<> f__AnonymousType2b2 <>h__TransparentIdentifier242) at System.Linq.Enumerable.WhereSelectEnumerableIterator
2.MoveNext()
在System.Linq.Enumerable.WhereSelectEnumerableIterator2.MoveNext()
1..ctor(IEnumerable的
at System.Collections.Generic.List1 collection)
1源)在 System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer。 DIFF(ModelMetadata 源,ModelMetadata目標,懶惰 modificationCommandTreeGenerator,migrationSqlGenerator migrationSqlGenerator,字符串sourceModelVersion,字符串 targetModelVersion)在 System.Data.Entity.Migrations.DbMigrator.IsModelOutOfDate(的XDocument 模型,DbMigration lastMigration)在 系統.Data.Entity.Migrations.DbMigrator.Upgrade(IEnumerable的 pendingMigrations,字符串targetMigrationId,字符串lastMigrationId)
at System.Linq.Enumerable.ToList[TSource](IEnumerable
在System.Data.Entity.Migrations.DbMigrator.UpdateInternal(字符串 targetMigration)在 System.Data.Entity的。 Migrations.DbMigrator。 <> c__DisplayClassc.b__b() 在 System.Data.Entity.Migrations.DbMigrator.EnsureDatabaseExists(動作 mustSucceedToKeepDatabase)處 系統 System.Data.Entity.Migrations.Infrastructure.MigratorBase.EnsureDatabaseExists(動作 mustSucceedToKeepDatabase)。 Data.Entity.Migrations.DbMigrator.Update(字符串 targetMigration)處 System.Data.Entity.Migrations.Design.ToolingFacade.UpdateRunner System.Data.Entity.Migrations.Infrastructure.MigratorBase.Update(字符串 targetMigration)。運行() at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate)at Sys tem.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate)
at System.Data.Entity.Migrations.Design.ToolingFacade。運行(BaseRunner 轉輪)在 System.Data.Entity.Migrations.Design.ToolingFacade.Update(字符串 targetMigration,布爾力)在 System.Data.Entity.Migrations.UpdateDatabaseCommand。 <> c__DisplayClass2。 < .ctor> b__0() 在 System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(動作 命令)序列包含一個以上的匹配元件
http://msdn.microsoft.com/en-us/data/jj591583.aspx有你讀這篇文章的代碼,第一逆屬性 – MethodMan 2014-12-01 21:16:24
是的,這就是我聽到我使用的InverseProperty 。也許我錯誤地閱讀它? – Dan 2014-12-01 21:22:51