初学DDD遇到的问题是这样的:
Customer中包含 Address 实体。 我用Petapoco 没法实现一对一或一对多关系的映射。园子里下的案例都是用
EntityFramework 来做的。求指点不用 EntityFramework 该怎么实现下面的映射实现增删改查
代码如下:
/// </summary> [PrimaryKey("Id")] [TableName("Customer")] public class Customer : IEntity, IAggregateRoot { private ICollection<CustomerRole> _customerroles; /// <summary> /// 唯一标示 /// </summary> public int Id { get; set; } /// <summary> /// 用户名 /// </summary> public string UserName { get; set; } /// <summary> /// 密码 /// </summary> public string Password { get; set; } /// <summary> /// 邮箱 /// </summary> public string Email { get; set; } /// <summary> /// 用户地址 /// </summary> public Address UserAddress { get; set; } ... }
[PrimaryKey("Id")] [TableName("Address")] public class Address { /// <summary> /// 唯一标示 /// </summary> public int Id { get; set; } /// <summary> /// 国家代码 /// </summary> public string CountryCode { get; set; } /// <summary> /// 国家名称 /// </summary> public string CountryName { get; set; } /// <summary> /// 省/州 代码 /// </summary> public string ProvinceCode { get; set; } /// <summary> /// 省/州 名称 /// </summary> public string ProvinceName { get; set; } /// <summary> /// 城市 代码 /// </summary> public string CityCode { get; set; } /// <summary> /// 城市 名称 /// </summary> public string CityName { get; set; } /// <summary> /// 县 代码 /// </summary> public string CountyCode { get; set; } /// <summary> /// 县 名称 /// </summary> public string CountyName { get; set; } }
默认场景下好像这个组件是不支持的,要支持也是只支持query操作。如果抛弃框架而言这块逻辑你可以自己实现repository,然后由其内部完成对这种对象的操作。
那DDD 除了EntityFramework之外 还有什么ORM框架适合这种场景?
@mycing: 没接触过多少,但支持这种关联对象的(外键)orm实现复杂度要高很多。
NPoco( 原petapoco) 已实现
https://github.com/schotime/NPoco/wiki/One-to-Many-Query-Helpers