0

我想知道是否将 ASP.NET Boilerplate 与 EF 一起使用,是否有可能:

  1. 在 EF 中使用组合主键。我在 Repository 的 TPrimaryKey 中看到了许多只有一列的示例。
  2. 主键列的名称是必需的,称为“Id”。

我在网上搜索,但我找不到答案。

4

1 回答 1

2

关于你的问题的一个例子

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:某些存储库方法可能无法按预期工作。所以在实施解决方案之前测试所有存储库方法

于 2017-06-22T02:24:46.733 回答