0

EF5.0 とビュー コンパイルを使用すると、すべてが機能していることがわかります。ビューが呼び出されるコールスタックからわかります。edmx プロパティ メタデータ アーティファクト処理は、アセンブリに埋め込みとして設定されます

以下のこのメソッド (コンストラクター) が呼び出されます。しかし、どうやってその名前を知ったのですか?1 つのアセンブリに複数のモデルを含めることはできますか? それが機能することをうれしく思いますが、その下で何が起こっているのか知りたいです。

何か案は?

public ViewsForBaseEntitySetsFE35229A04DD6E5585E40F6CE4FBC33EE6C9199EBD58235921B21B951250FF67()
    {
        this.EdmEntityContainerName = "BosMasterEntities";
        this.StoreEntityContainerName = "BosMasterModelStoreContainer";
        this.HashOverMappingClosure = "0edb68dd82ba8436bcabb10d30d018482670a8944e1013c90d795d35afea1b8d";
        this.HashOverAllExtentViews = "d0d326d5289ea43aa6ea7854e053ba0bd410789e3196101e38bace646c0fa404";
        this.ViewCount = 34;
    }
4

1 に答える 1

4

切り取ったコードには、実際には 2 つの重要な情報が欠けています。コードは次のようになります。

[assembly: System.Data.Mapping.EntityViewGenerationAttribute(typeof(Edm_EntityMappingGeneratedViews.ViewsForBaseEntitySets6EB2ED815B2C1EA5C534EACE1F3EA695AAF84C0704F820B6C583CE86EFE39C0A))]

namespace Edm_EntityMappingGeneratedViews
{    
    public sealed class ViewsForBaseEntitySets6EB2ED815B2C1EA5C534EACE1F3EA695AAF84C0704F820B6C583CE86EFE39C0A : System.Data.Mapping.EntityViewContainer
    {

        /// <Summary>
        /// The constructor stores the views for the extents and also the hash values generated based on the metadata and mapping closure and views.
        /// </Summary>
        public ViewsForBaseEntitySets6EB2ED815B2C1EA5C534EACE1F3EA695AAF84C0704F820B6C583CE86EFE39C0A()
        {
            this.EdmEntityContainerName = "Context";
            this.StoreEntityContainerName = "CodeFirstDatabase";
            this.HashOverMappingClosure = "565d1a0ab9083c0e3d54e4d636e9ea8ace70a69f415e728c42b1e687acf65932";
            this.HashOverAllExtentViews = "84db96d2d3c40ffdbcbf3ab1e49f50e068df40cd9e62f87416402f6eb3569da0";
            this.ViewCount = 2;
        }
        ...

まず、EntityViewGenerationAttribute 型のアセンブリ レベルの属性があります。この属性を持つアセンブリのみが、ビューを含むことができるアセンブリと見なされます。属性をよく見ると、この属性がビューを含むクラスの型を持っていることがわかります。1 つのアセンブリに複数の EntityViewGenerationAttribute を含めることができます。次に、ビューを含むクラスは EntityViewContainer から派生します。EntityViewGenerationAttribute で指定された型が EntityViewContainer から派生していない場合、EF はスローします。

于 2012-10-02T21:56:40.467 に答える