У меня есть следующая модель с отображением:
public partial class BPart
{
public Guid Id { get; set; }
[Required]
public Part PartNumber { get; set; }
[Required]
public Revision Revision { get; set; }
public Assembly Assembly { get; set; }
public Vendor Vendor { get; set; }
public double Qty { get; set; }
[StringLength(100)]
public string Unit { get; set; }
public OrderState OrderState { get; set; }
public string AdditionalInformation { get; set; }
public bool IsRemoved { get; set; }
public BPart()
{
Id = Guid.Empty;
Assembly = new Assembly();
Vendor = new Vendor();
OrderState = new OrderState();
}
}
public BOMPartMap()
{
// Primary Key
this.HasKey(t => t.Id);
// Properties
this.Property(t => t.Qty);
this.Property(t => t.Unit)
.HasMaxLength(100);
// Table & Column Mappings
this.ToTable("BOMPart");
this.Property(t => t.Id).HasColumnName("Id")
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); ;
this.Property(t => t.Qty).HasColumnName("Qty");
this.Property(t => t.Unit).HasColumnName("Unit");
this.Property(t => t.IsRemoved).HasColumnName("IsRemoved");
this.Property(t => t.AdditionalInformation).HasColumnName("AdditionalInformation");
this.HasRequired(t=>t.PartNumber)
.WithMany(t=>t.BOMS)
.Map(c => c.MapKey("PartReferenceId"));
this.HasRequired(t => t.Revision)
.WithMany(t => t.Parts)
.Map(c => c.MapKey("RevisionReferenceId"));
this.HasOptional(t => t.Assembly)
.WithMany(t => t.Parts)
.Map(c => c.MapKey("AssemblyReferenceId"));
this.HasOptional(t => t.Vendor)
.WithMany(t => t.OrderedParts)
.Map(c => c.MapKey("VendorReferenceId"));
this.HasOptional(t => t.OrderState)
.WithMany(t => t.Parts)
.Map(c => c.MapKey("OrderStateReferenceId"));
}
}
Когда я создал новый объект BOMPart с NULLable OrderState и Vendor, EF также создал дополнительные объекты (Vendor и OrderState).Мой объект перед сохранением выглядит так:
BPart.Vendor = null
BPart.OrderState = null
Я проверил базу данных, и там в этих дополнительных полях есть check mart NULLABLE.Но я не могу понять, почему EF создает новый объект для необязательных полей.
Заранее спасибо!