0

データベースに存在しないプロパティを持つドメインモデルがあります。例えば ​​...

public class DomainModel: IKeyedEntity
{
    //Id for the table
    public int DomainModelID { get; set; }

    //Foreign key value
    public int FooID { get; set; }

    //Text value
    public string Value { get; set; }

    //Generic reference to the id of the table
    public int Key { get { return this.DomainModelID; } }

    //No a column in the database
    public Guid ArchiveIdentifier
    {
        get { return Foo.ArchiveIdentifier; }
        set { Foo.ArchiveIdentifier = value }
    }

    //Navigation Property
    public virtual Foo Foo { get; set; }
}

ご覧のとおり、DomainModelsテーブルの列ではなくプロパティを確認できKeyます。ArchiveIdentifierクエリを実行すると、EntityFrameworkはプロパティArchiveIdentifierをデータベースの列であるかのように扱います。これは、すべてのDomainModelをフェッチするときに生成されるSQLの例です。

SELECT 
[Extent1].[DomainModelID] AS [DomainModelID], 
[Extent1].[FooID] AS [FooID], 
[Extent1].[Value] AS [Value],
[Extent1].[ArchiveIdentifier] AS [ArchiveIdentifier] 
FROM  [dbo].[DomainModels] AS [Extent1]

Entity FrameworkはKey、setメソッドがないため、プロパティにデータを入力しようとはしませんがArchiveIdentifier、テーブル内の列であるかのように扱います。列ではないEntityFrameworkに通知するための注釈またはメソッドはありArchiveIdentifierますか?

4

2 に答える 2

4

:を使用しNotMappedAttributeます

[NotMapped]
public Guid ArchiveIdentifier
{
    get { return Foo.ArchiveIdentifier; }
    set { Foo.ArchiveIdentifier = value; }
}
于 2012-12-27T18:20:31.190 に答える
0

ArchiveIdentifier プロパティで [NotMapped] データ注釈を使用する

于 2012-12-27T18:23:17.697 に答える