【问题标题】:Composive Primary Key on ASP.NET BoilerplateASP.NET 样板中的复合主键
【发布时间】:2017-05-18 20:21:34
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# asp.net entity-framework asp.net-boilerplate


    【解决方案1】:

    关于您的问题的示例

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-21
      • 2015-04-27
      • 2013-06-07
      • 2013-10-23
      • 2020-03-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多