c# – 在EF6中使用枚举作为FK
我们有一个枚举供应商
但是现在我们还需要在这种关系上有一些域数据 所以在99.9%的域名代码中我们对enum的操作就像product.Supplier == Suppliers.FedEx 但是现在我们还添加了product.SupplierInfo.CanAdjustPickupTime,其中SupplierInfo是一个实体而不仅仅是一个简单的枚举类型. 我试过这些配置 Property(p => p.Supplier) .IsRequired() .HasColumnName("SupplierId"); HasRequired(p => p.SupplierInfo) .WithMany() .HasForeignKey(p => p.Supplier); //I have also tried casting to int doing .HasForeignKey(p => (int)p.Supplier) 这将失败
也试过了 Property(l => l.Supplier) .IsRequired() .HasColumnName("SupplierId"); HasRequired(p => p.SupplierInfo) .WithMany() .Map(m => m.MapKey("SupplierId")); 这样就可以给人留下好处
我可以将SupplierId定义为使用HasForeignKey的Property属性然后我需要更改为.SuppliedId ==(int)Suppliers.FedEx等不是真正的解决方案. 我还可以添加一个使用SupplierId属性作为支持字段的属性枚举,但这不适用于Expressions,因为它需要使用实际映射的数据库属性 有任何想法吗? 解决方法
我有课:
public class Agreement { public int Id { get; set; } public AgreementStateTypeEnum AgreementStateId { get; set; } } public class AgreementState { public int Id { get; set; } public string Title { get; set; } } 背景: public class AgreementContext :DbContext { public AgreementContext() : base("SqlConnection") { } public DbSet<Agreement> Agreements { get; set; } } 在方法OnModelCreating我什么都没写. public enum AgreementStateTypeEnum : int { InReviewing = 1,Confirmed = 2,Rejected = 3 } 在数据库中:在表中协议我有外键AgreementStateId – 它是表AgreementState的链接. var temp = context.Agreements.First(x => x.AgreementStateId == AgreementStateTypeEnum.Confirmed); 我用enum怎么外键. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |