我想基於命名約定創建與實體框架的關係的1:n關係。我正在使用codefirst。實體框架忽略的公約和alwas創建兩個外鍵列,而不是隻有一個:實體框架代碼在創建1:n關係時,首先在數據庫中生成兩個外鍵列
- StreamWorkerUser_Id(我想僅此列)
- StreamWorkerUser_Id1
的配置類配置類似如下:
AutomaticMigrationsEnabled = true;
AutomaticMigrationDataLossAllowed = true;
我正在使用Microsoft.Identity Framework,併爲所有模型自定義類。
我的DbContext類非常簡單,如下所示。
public class StreamWorkerDataContext : IdentityDbContext<StreamWorkerUser, StreamWorkerRole, int, StreamWorkerUserLogin, StreamWorkerUserRole, StreamWorkerUserClaim>
{
public DbSet<Task> Tasks { get; set; }
}
的Task
模型:
public class Task : StreamWorkerEntity
{
public StreamWorkerUser StreamWorkerUser { get; set; }
}
的StreamWorkerUser
模型:
public class StreamWorkerUser : IdentityUser<int, StreamWorkerUserLogin, StreamWorkerUserRole, StreamWorkerUserClaim>
{
public virtual List<Task> Tasks { get; set; } // also tested ICollection
}
的Task
類從該基類型繼承,這裏也被定義StreamWorkerUser
類型的兩個屬性(但是,這些列在數據庫中正確生成。):
public class StreamWorkerEntity
{
[Key]
public int Id { get; set; }
public DateTimeOffset Created { get; set; }
public DateTimeOffset Updated { get; set; }
public StreamWorkerUser Creator { get; set; }
public StreamWorkerUser LastEditor { get; set; }
}
是否有可能,屬性Creator
和LastEditor
干擾數據庫遷移?
我是否正確理解約定?
更多的信息:
- 實體框架版本6.1.3
- Microsoft.AspNet.Identity.Core 2.2.1
- Microsoft.AspNet.Identity.EntityFramework 2.2.1
- ASP在碧霞
- C#6.0
- .NET 4 MVC 5
- SQL服務器.NET框架4.5.2
- 所有這些代碼是一類libary
你怎麼又希望存儲關係Creator和LastEditor如果你只想要一個外鍵? – faint220
@ faint220我不想只有一個外鍵。應該有三個。一個用於'Creator',一個用於'LastEditor',一個用於'StreamWorkerUser'。目前有4個列生成:Creator_Id,LastEditor_Id,StreamWorkerUser_Id,StreamWorkerUser_Id1。 –
您是否嘗試過實體類型配置?你可以明確地聲明外鍵使用流利的API – Efe