0

私の問題は、WebPages、Entity Framework 6.1.3、c#、および SQL CE データベースを使用する Web サイトにあります。「データベース優先」で生成されたエンティティ型の 1 つは、system.TimeZone クラスとまったく同じ名前ですが、Intellisense と IDE は名前の競合を正しく検出/処理していません。

私の質問は、システム クラスとの名前の競合を防ぐために、コード内のエンティティ名を完全に修飾する方法 (EF 6.1.3、エンティティ コンテキストを使用) です。

既存の db テーブルの EF 実装があります。テーブルには「TimeZones」という名前が付けられました。エンティティ モデルは、データベース ファースト アプローチを使用して生成されました。

EF の複数形化規則により、テーブル名が "TimeZone" という名前のエンティティに変換されました。

問題は、「TimeZone」エンティティを新しくしようとすると、新しい TimeZOne インスタンスへのすべてのドット参照が System.TimeZone のプロパティとメソッドであるため、「System.TimeZone」クラスを新しくしようとしていると IntelliSense が判断することです。クラス。エンティティ モデルの TimeZOne エンティティのプロパティが表示されることを期待していました。

TimeZone エンティティを名前空間で完全に修飾するか、コードの先頭にある using ステートメントにモデルの名前空間を含めることができると期待しています。ただし、EF 6.1.3 モデル プロパティが提供する「名前空間」は、真の名前空間ではないようです。EF は既存のデータベースから生成されました。

4

1 に答える 1

0

エンティティのオブジェクトを宣言するときは、エンティティ クラス パスを明示的にします。

MyApplication.Entities.TimeZone tz = new MyApplication.Entities.TimeZone();

または単に:

var tz = new MyApplication.Entities.TimeZone();

エンティティ クラスの前には、次のようなものが必要です。

namespace MyApplication.Entities
{
    public class Person
    {
        //
    }
}
于 2015-06-05T19:25:02.330 に答える