Tag: ef fluent api

使用Entity Framework Fluent Api映射System.Uri

非常简单的问题。 我有一个具有System.Uri类型属性的模型。 Uri没有默认的无参数构造函数,也没有ID字段。 有没有办法覆盖我的模型生成以自定义方式将其存储在数据库中(例如,只是作为string )? 在NHibernate中,我之前通过实现IUserType实现了这IUserType ,但我在CodeFirst中找不到类似的机制。 显然,我可以创建一个自定义类型,在引擎盖下使用Uri并公开常规的可映射属性和构造函数,我只是好奇是否有任何方法来映射这个系统类型,这样我就不必像这样做一个包装器。

EF 6.1 Code First中不同主键的一对一关系

我在使用Entity Framework 6.1从PayGroup对象获取对employee对象的引用时遇到问题。 我在PayGroup.SupervisorId – > Employee.EmployeeId的数据库中有一个外键。 请注意,这是一个零或一对一的关系(薪资组只能有一个主管,一个员工只能是一个薪酬组的主管)。 根据GitHub上的这篇文章,在具有不同主键的表上不可能有外键。 我已经手动将外键添加到数据库中,但我无法弄清楚如何设置流畅的api映射以便能够从薪酬组中获取员工对象。 薪酬组表 员工表 注意:PayGroup.SupervisorId中有一个外键 – 数据库中的Employee.EmployeeId。 下面是DTO(我目前在这些类之间没有任何工作关系映射): public class PayGroup { public int Id { get; set; } public string SupervisorId { get; set; } public virtual Employee Supervisor { get; set; } } public class Employee { public string EmployeeId { get; set; } public […]

与Entity Framework Fluent API的一对一关系

我在我的一个实体上进行反向导航时遇到问题。 我有以下两个对象: public class Candidate { [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] public long CandidateId { get; set; } …. // Reverse navigation public virtual CandidateData Data { get; set; } … // Foreign keys …. } public class CandidateData { [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] public long CandidateDataId { get; set; } [Required] public long CandidateId { get; set; } // […]

使用Fluent API进行级联删除

我有两个实体。 Profile和ProfileImages 。 获取Profile我想通过Profile删除ProfileImages而不删除对Profile的引用(将其设置为null )。 如何通过流畅的API和级联删除来完成? 我是否设置了HasRequired属性或CascadeDelete属性? public class Profile { //other code here for entity public virtual ICollection ProfileImages { get; set; } } public class ProfileImage { // other code here left out [Index] public string ProfileRefId { get; set; } [ForeignKey(“ProfileRefId”)] public virtual Profile Profile { get; set; } }

Fluent API,Entity Framework Core 2.0中的多对多

我使用EF Core 2.0,Code first和Fluent API搜索stackoverflow以获得生成多对多关系的正确解决方案。 一个简单的场景是: public class Person { public Person() { Clubs = new HashSet(); } public int PersonId { get; set; } public virtual ICollection Clubs { get; set; } } public class Club { public Club() { Persons = new HashSet(); } public int ClubId { get; set; } public virtual […]

entity framework代码首先:循环或多个级联路径

我有一个Booking类,它有一个预订联系人(一个Person )和一组导航属性( People ),它们通过连接表链接到另一组Person的导航属性( Bookings )。 如何生成Booking表,并为预订联系人关系启用了级联删除? 当我将它从流畅的API代码中删除时(启用了级联删除的默认设置),我从迁移中收到以下错误消息: 在’BookingPeople’表上引入FOREIGN KEY约束’FK_dbo.BookingPeople_dbo.People_PersonID’可能会导致循环或多个级联路径。 指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束。 无法创建约束或索引。 查看以前的错误。 modelBuilder.Entity() .HasMany(s => s.aBookings) .WithRequired(s => s.Contact) .HasForeignKey(s => s.ContactId); modelBuilder.Entity() .HasMany(t => t.People) .WithMany(t => t.Bookings) .Map(m => { m.ToTable(“BookingPeople”); m.MapLeftKey(“BookingID”); m.MapRightKey(“PersonID”); });