3

私は長い間これを見つめていました、そして問題を見ることができません。

EF4とPOCOジェネレーターを使用していくつかのPOCOクラスを生成しました。

私はMetadataType属性を使用して、ビュー(asp.net MVC)で使用できる「バディ」クラスを作成し、データ注釈を利用しようとしています。

つまり、Contactというドメインエンティティ(POCO)があります。これは、名前空間BreakAwayEntitiesのBreakAwayEntitiesというプロジェクトにあります。

ビューのプロジェクト(WebUI)でパブリック部分クラスを作成しました。これです:

namespace BreakAwayEntities
{
    [MetadataType(typeof(ContactMetadataSource))]
    public partial class Contact
    {
        internal sealed class ContactMetadataSource
        {
            [HiddenInput(DisplayValue = false)]
            public int ContactID { get; set; }

            [Display(Name = "First Name")]
            public string FirstName { get; set; }

            [Display(Name = "Last Name")]
            public string LastName { get; set; }

            public string Title { get; set; }
        }        
    }
}

ただし、次のエラーメッセージが表示されます。

エラー10タイプ'System.Collections.Generic.List[c:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0\mscorlib.dll]'を'System.Collections.Genericに暗黙的に変換できません。リスト[c:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0 \ mscorlib.dll]'F:\ Code \ Sandpit \ GetAwayBreaks \ WebUI \ Controllers \ CustomerController.cs 29 38 WebUI

何らかの理由で、配線が機能していません。部分クラスの名前空間は同じですが、異なるプロジェクトにあります。それは問題ではないのですか?ビューで使用される場合のContactクラスは、単一のプロパティを表示しません。MetadataTypeによって拡張されたように、POCOのすべてのプロパティを公開する必要があります。

アセンブリが欠落している場合、それが何であるかについてのヒントが得られません。

私は何を逃しましたか?Global.asaxに何かを登録する必要がありますか?ありがとう

4

1 に答える 1

5

部分クラスは、1つのプロジェクト内にのみ存在できます。

http://msdn.microsoft.com/en-us/library/wa80x488(v=vs.100).aspx

すなわち、

同じタイプの一部であることが意図されているすべての部分タイプ定義は、同じアセンブリおよび同じモジュール(.exeまたは.dllファイル)で定義する必要があります。部分的な定義は、複数のモジュールにまたがることはできません。

于 2012-11-24T04:10:26.823 に答える