web-dev-qa-db-ja.com

Entity Frameworkのアセンブリ内での型名の重複(6.1.0)

何が起こっているのかわかりませんが、クエリを実行するときに次の例外が発生し続けます。 「アセンブリ内の型名が重複しています。」ウェブ上で解決策を見つけることができませんでした。ソリューション内のすべてのプロジェクトからエンティティフレームワークを削除し、ナゲットを使用して再インストールすることで問題を解決しました。その後、突然例外がすべて戻ります。テーブルスキーマを何度も検証しましたが、何も問題はありませんでした。

これが例外の原因となるクエリです。

    var BaseQuery = from Users in db.Users
            join UserInstalls in db.UserTenantInstalls on Users.ID equals UserInstalls.UserID
            join Installs in db.TenantInstalls on UserInstalls.TenantInstallID equals Installs.ID
            where
                Users.Username == Username
                && Users.Password == Password
                && Installs.Name == Install
            select Users;

    var Query = BaseQuery.Include("UserTenantInstalls.TenantInstall");

    return Query.FirstOrDefault();

前述したように、以前と同じクエリが機能していました。データは変更されておらず、コードも変更されていません。

43
CodeMilian

回避策として、これはデバッガを使用してシングルステップ実行している場合にのみ発生します。ソースのさらに数行下にブレークポイントを配置すると、エラーは表示されません。

アンインストールしていないので、少なくとも作業を続けることができます。

63
Chad Lehman

これはEF 6.1.0の新しい問題であり、EFチームはこの問題を認識しています。

https://entityframework.codeplex.com/workitem/2228

19
yohohoho

私のWCF webservice最近。ソリューションをクリーンアップして再構築するだけです。これで問題が解決するはずです。

12
Sandy

上記のどれも私にはうまくいかないようですが、以前に指定されたリンクでは、これはうまくいきました。これは「bunomonteiro」によって提出されました

「アセンブリ内の重複する型名」を修正するには

同様の問題がありました。すべてのモデル/クラスをチェックしましたが、タイプに重複した名前を使用していません。アセンブリを削除し、データベースからモデルとコンテキストオブジェクトを再生成しましたが、依然として同じ問題がありました。

Visual Studioで「子供を評価できませんでした」というトレースが生成されました。解決策は、.ToList();を追加することです。またはToArray();またはToDictionary()など、クエリに。等.

例えば。 var query = context.TableName.Where(x => x.name == "CodeRealm")。ToList();

PingBack- http://entityframework.codeplex.com/workitem/1898

bunomonteiroは7月18日3:37 AMに書き込みました

4
Steady

これは6.1.3で修正されたようです。

この結論に至った経緯は次のとおりです。

この問題を以前のバージョン(おそらく6.1.2)で確実に再現しました。ソリューションを再構築しても修正されませんでした。 didの前後にブレークポイントを設定すると、問題が再現されますが、ブレークポイントのみafter例外のポイントdid not例外が発生します。他の回答でここに述べたように。 [概要:EFの古いバージョンを使用している他のすべての人と同じ問題を抱えているようです。]

まったく同じブレークポイントがあり、再起動などは行われていないので、Entity Frameworkの更新プログラムをインストールしました。これはdid問題を修正し、例外がスローされることなく「問題コード」の前後にブレークポイントを自由に設定できました。

この問題は、ある種のランダムで条件に対して気まぐれなものであるため、EFへの更新が具体的に問題に対処していると断言することは困難ですが、これまでのところは良好です。

2
Yuri

私たちにとっては、サーバーの再起動だけでした。

0
Grandizer

EF 6.1では、同じ問題に遭遇します。

私の場合、私のモデルには自己参照テーブルがあります。そのため、次の2つの理由が原因である可能性があります。

  1. //Database.SetInitializer(null)DBContextコンストラクターの次の行をコメントアウトするだけです。
  2. 外部キーとそれに対応するナビゲーションプロパティの一貫性を保つか、単にナビゲーションプロパティをnullに保つ
0
user3884

私も同様の問題に直面していたので、結果セットをリストに変換して修正しました

var Registers = registerRepository.All.ToList()。Where(a => a.AreaLatitude.Equals(0));

結果をToListに変換することで問題を解決し、さらに反復しました。

そして問題を解決しました。

0
Ganesh Todkar

昨日を取り除くのに何時間もかかった同じ問題があった。 EF 6.1.0を使用して、上記と同様にlinq to entitiesクエリを実行するとエラーが発生します。私の解決策は、IIS Express、clean solution、ソリューション内のすべてのプロジェクトからEFをアンインストールし、VS2012を閉じ、ソリューション内のすべてのパッケージフォルダー/ファイルを削除し、VS2012を再起動し、EF 6.1.0を追加することでした必要、コンパイル、エラーが消えました。

0
user3202925

select Users;」のコードセグメントを修正する必要があります。

var BaseQuery = from Users in db.Users
        join UserInstalls in db.UserTenantInstalls on Users.ID equals UserInstalls.UserID
        join Installs in db.TenantInstalls on UserInstalls.TenantInstallID equals Installs.ID
        where
            Users.Username == Username
            && Users.Password == Password
            && Installs.Name == Install
        select Users;

修正コード:

select new { ID=Users.ID, F1= Users.forExampleField1,
             F2= UserInstalls.forExampleFild1, 
             F3= Installs.forExampleFild1 , 
             F4= Installs.forExampleFild2 };

理由:

クラスに外部キーフィールドが存在し、「Linq」はそれらを削除できません。次のエラーがありました:

アセンブリ内の重複する型名

(もちろんこの問題Fault "entity framework"!)

私はこの問題について完全に説明していますが、残念ながら私の英語はあまりよくなく、専門分野を説明するのは本当に難しいです。これをおforびします。

0
Amin Ghaderi