簡體   English   中英

在多個dll中使用表時,指定的架構無效無效發生異常

[英]Schema specified is not valid exception occured when using table in multiple dlls

我有一個此處描述的問題。 讓我解釋一下細節。

我有一張表,用於帶有不同edmx文件的兩個不同的dll。 我有一個使用這兩個dll的可執行文件。 當我調用其中之一時,它會拋出上面指定的異常(指定的架構無效,具有名稱的多種類型...)

有人可以描述一下這種情況下導致此錯誤的原因嗎?

編輯:詳細說明如下:

  1. 下面的代碼在ABC.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; }
    }
}
  1. 下面的代碼在XYZ.dll中

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM