[英]Schema specified is not valid exception occured when using table in multiple dlls
我有一個此處描述的問題。 讓我解釋一下細節。
我有一張表,用於帶有不同edmx文件的兩個不同的dll。 我有一個使用這兩個dll的可執行文件。 當我調用其中之一時,它會拋出上面指定的異常(指定的架構無效,具有名稱的多種類型...)
有人可以描述一下這種情況下導致此錯誤的原因嗎?
編輯:詳細說明如下:
ABC.dll-> EntModel.edmx-> EntModel.Context.cs
namespace MyNamespaceABC
{
using System;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
public partial class AbcEntities : DbContext
{
public AbcEntities()
: base("name=AbcEntities")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public DbSet<MyTable> MyTables { get; set; }
}
}
XYZ.dll-> EntModel.edmx-> EntModel.Context.cs
namespace MyNamespaceXYZ
{
using System;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
public partial class XyzEntities : DbContext
{
public XyzEntities()
: base("name=XyzEntities")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public DbSet<MyTable> MyTables { get; set; }
}
}
這些dll由稱為Main.exe的可執行文件使用。 當我在其Tester項目上測試這些dll時,它們就像是一種魅力。 然后,當我從Main.exe調用它時,當我嘗試檢索數據時,兩個dll都拋出此異常。
指定的架構無效。 錯誤:
EdmItemCollection中不同名稱空間中存在多個名為“ MyTable”的類型。 基於約定的映射要求唯一的名稱,而不考慮EdmItemCollection中的名稱空間。
要解決此問題,我在edmx圖中重命名了實體名稱,該錯誤消失了。
綜上所述,禁止在不同項目中使用相同的實體名稱。 使用一種唯一的結構訪問數據庫將永久解決主項目的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.