Я пытался сам это обработать, но я не парень базы данных, и это сильно смутило меня.Fluent API - Идентификатор маркировки как FK и PK
У меня есть два класса (вырубленные для удобства чтения)
public class Project : IModel
{
//Internal DB Id
[DataMember]
public int ProjectID { get; set; }
//Project No - Auto Generated at service level
[DataMember]
public string ProjectNo { get; set; }
}
public class ProjectExtra : IModel
{
[DataMember]
public int ProjectID { get; set; }
[DataMember]
public string Description { get; set; }
}
Они используются для создания моей базы данных с помощью Ef6, однако мне нужно отметить ProjectID в ProjectExtra в обоих ПК и FK, и я не могу понять, как это сделать с Fluent API.
ProjectExtra не является обязательным, он может существовать один раз для проекта или вообще отсутствует.
Может кто-то, возможно, мне точку в правильном направлении, я уже настроили несколько других в методе
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Project>().HasMany(p => p.Managers).WithMany();
modelBuilder.Entity<Project>().HasMany(p => p.Clients).WithMany();
}
'modelBuilder.Entity() HasKey (т => t.ProjectID); modelBuilder.Entity (). HasRequired (p => p.Project) .WithOptional(); 'И вам нужно добавить свойство навигации Project –
Marusyk
В ProjectExtra нет проекта, это моя путаница – Ben
, вы, кажется, пытаетесь уменьшите дисковое пространство для описаний NULL при попытке использовать дополнительную таблицу только для хранения описания. Я не думаю, что это стоит того. Просто добавьте столбец описания в свою исходную таблицу Project и, конечно же, используйте для этого столбца тип строки переменной длины. Все NULL не будут потреблять сколько-нибудь дисковое пространство, читайте здесь больше http://stackoverflow.com/questions/3731172/how-much-size-null-value-takes-in-sql-server – Hopeless