我已经盯着这个很长一段时间了,看不出问题。
我使用EF4和POCO生成器生成了一些POCO类。
我正在尝试使用MetadataType属性来创建我可以在我的View(asp.net MVC)中使用的“伙伴”类,并利用数据注释。
所以,我有一个名为Contact的域名实体(POCO)。这是在命名空间BreakAwayEntities中名为BreakAwayEntities的项目中。
我在View的项目(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.List [c:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0 \ mscorlib.dll]'F:\ Code \ Sandpit \ GetAwayBreaks \ WebUI \ Controllers \ CustomerController.cs 29 38 WebUI
由于某种原因,接线不起作用。部分类的名称空间是相同的,但它们位于不同的项目中。那应该没关系?在View中使用的Contact类不会显示单个属性。它应该暴露POCO的所有属性,由MetadataType增强。
如果我错过了一个集会,我没有得到任何暗示。
我错过了什么?我需要在Global.asax中注册一些东西吗?感谢
答案 0 :(得分:5)
部分类只能存在于一个项目中。
http://msdn.microsoft.com/en-us/library/wa80x488(v=vs.100).aspx
更具体地说,
所有部分类型定义必须是相同类型的部分 在同一个程序集和相同的模块中定义(.exe或.dll 文件)。部分定义不能跨越多个模块。