它能够(w/城堡Email)与C#接口(尤为也可与检的)
-
10-07-2019 - |
题
任何使用它能够域对象&也可与检的对象实施了从一个共同的接口?我想单独的我的所有它能够属性进入领域对象,留下我也可与检和接口的清洁。
问题是它能够与引发错误,当它试图联系的接口,与具体的课程。
它能够.MappingException:协会引用的映射类:IContact
我明白为什么它抱怨关于使用非处于休眠状态的接口,但是我在努力可视的方式进行重组。骨架的再现我的代码列出如下,任何想法,对于如何结构,我的代码的更好?
public interface ICompany
{
IList<IContact> Contacts { get; set; }
}
public class CompanyDTO : ICompany
{
private IList<IContact> contacts;
public IList<IContact> Contacts { get { return this.contacts; } set { this.contacts = value; } }
}
[ActiveRecord]
public class Company : ActiveRecordBase<Company>, ICompany
{
private IList<IContact> contacts;
[HasMany(Inverse=true, Table="Contact", ColumnKey="CompanyId")]
[ScriptIgnore]
public IList<IContact> Contacts { get { return this.contacts; } set { this.contacts = value; } }
}
编辑:
我想要有一个共同的接口,所以,我可以保证他们都保持同一领域(即。靠在编译器,让他们相一致)。它还允许我使用也可与检是在看我的一部分应用,但是投下他们域对象为商业和数据访问。此外,亚历克斯的解决方案不起作用,因为ICompany的联系的类型IList,不IList.我想保持它作为IContact所以我也可与检的对象并不了解的接触域对象。
解决方案
在您的具体情况下,你应该只添加Type = typeof(Contact)
到映射属性,像这样:
[HasMany(Inverse=true, Table="Contact", ColumnKey="CompanyId", Type=typeof(Contact))]
其他提示
好在你域不能使用IContract要参考域实体使用的具体类替代。如果你想纠正你的版本用简单:
[ActiveRecord]
public class Company : ActiveRecordBase<Company>
{
private IList<Contact> contacts;
[HasMany(Inverse=true, Table="Contact", ColumnKey="CompanyId")]
[ScriptIgnore]
public IList<Contact> Contacts { get { return this.contacts; } set { this.contacts = value; } }
}
我没有看到这点来接你域和你交互.他们都是耦合的,并且他们可以有不同的信息。例如,你可以保留一些信息非常轮封装成你域和只有通些其他信息。也可与检都是为了transfert你想要的数据共享与上层。
你可以有基类定义的实体和你ValueObject.在简短的实体:DomainEntity ID能意味着他们可以持续存在。ValueObject=也可与检无法持久化(不ID能)
看看核心设计的尖拱门:
- /BaseObject.cs:提供的基本目比较的服务。
- /实体。cs:提供了一个对象域 签署和该键ID财产。这也验证 支持,它能够验证程序。对象扩展从实体 必须有至少一个[DomainSignature]财产;它会把一个 设计-通过合同的例外如果这是侵犯。该接口 IEntityWithTypedID让你滚你自己的。
- /ValueObject.cs:这是一个值对象,其中所有的 性时,使用比较的另一个值的对象。对象 延长从ValueObject可能没有任何[DomainSignature] 属性;它会把一个设计-通过合同的例外如果这是 到侵犯。
我将做什么,如果我有[的hasMany]属性?它实际上并没有属性名“类型”,但[属性]和[属于关联]的人都有。
<强>更新强>
在答案是使用CollectionType = typeof(YourType)
<强>更新2 强>
没有,它不工作时,该属性被设置为集合类型即列表等 试图设置[的hasMany(typeof运算(meType),...)]但仍然没有作品。