【发布时间】:2017-05-18 20:21:34
【问题描述】:
我想知道是否将 ASP.NET Boilerplate 与 EF 一起使用,是否可以:
- 在 EF 中使用组合主键。我在 Repository 的 TPrimaryKey 中看到了许多只有一列的示例。
- 主键列的名称是必需的,调用“Id”。
我在网上搜索,但找不到答案。
【问题讨论】:
标签: c# asp.net entity-framework asp.net-boilerplate
我想知道是否将 ASP.NET Boilerplate 与 EF 一起使用,是否可以:
我在网上搜索,但找不到答案。
【问题讨论】:
标签: c# asp.net entity-framework asp.net-boilerplate
关于您的问题的示例
public class MyEntity : Entity<string>
{
[NotMapped]
public override string Id
{
get { return MyIntField + "-" + MyStringField ; }
set { /* no need set */ }
}
[Key]
[Column(Order = 1)]
public virtual int MyIntField { get; set; }
[Key]
[Column(Order = 2)]
public virtual string MyStringField { get; set; }
public virtual string OtherField { get; set; }
}
然后像这样使用你的存储库
public class MyEntityAppService: IMyEntityAppService {
private readonly IRepository < MyEntity, string > _myEntityRepository;
public AccountAppService(IRepository < MyEntity, string > myEntityRepository) {
_myEntityRepository = myEntityRepository;
}
public void Test() {
_myEntityRepository.Insert(new MyEntity {
MyIntField = 1,
MyStringField = "test",
OtherField = "Alper Ebicoglu"
});
var myAllEntities = _myEntityRepository.GetAllList();
var myFilteredEntity = _myEntityRepository.Single(s => s.MyIntField == 1 &&
s.MyStringField == "test");
}
// ...
}
PS:某些存储库方法可能无法按预期工作。所以在实施解决方案之前测试所有存储库方法
【讨论】: