【发布时间】:2014-01-27 05:50:43
【问题描述】:
我正在使用实体框架创建一对一的关系。我创建了两个类 Student 和 IssueMaster。这两个类都派生自基实体类
public class Entity
{
public Entity()
{
CreatedOn = DateTime.Now;
}
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
public DateTime CreatedOn { get; set; }
}
public class Student : Entity
{
public string Name { get; set; }
public string MobileNo { get; set; }
public string Address { get; set; }
}
public class IssueMaster : Entity
{
public IssueMaster()
{
IssueDate = DateTime.Now;
}
public virtual Student Student { get; set; }
public DateTime IssueDate { get; set; }
public DateTime? ReturnDate { get; set; }
}
Student 和 IssueMaster 类的映射是,
public class StudentMap : EntityTypeConfiguration<Student>
{
public StudentMap()
{
ToTable("Student");
Property(x => x.Name)
.IsRequired()
.HasMaxLength(20);
Property(x => x.MobileNo)
.IsRequired()
.HasMaxLength(10)
.IsFixedLength();
Property(x=>x.Address).HasMaxlength(50);
}
}
public class IssueMasterMap : EntityTypeConfiguration<IssueMaster>
{
public IssueMasterMap()
{
ToTable("IssueMaster");
Property(x => x.IssueDate).IsRequired();
Property(x => x.ReturnDate).IsOptional();
HasRequired(x => x.Student);
}
}
保存实体的保存方法是
public static bool Save<T>(T entity) where T : Entity
{
var context = SessionManager.GetCurrentContext;
context.Entry(entity).State = EntityState.Added;
return context.SaveChanges() > 0;
}
问题是当我们将 IssueMaster 对象保存在数据库中时,附加到该 IssueMaster 对象的 Student 对象也保存在数据库中。
在代码中要做什么,以便当我们从附加到该 IssueMaster 对象的数据库中保存 IssueMaster 对象和 Student 对象时,只保存 IssueMaster 对象? (就像 Nhibernate 中的 SaveOrUpdate 方法一样)
【问题讨论】:
-
你想保存数据库中不存在的全新IssueMaster对象,但你希望它在student_id列中有
null吗? -
是的,我想在 Student_id 列中使用现有学生 ID 值保存新的 IssueMaster 对象,数据库中已经存在学生记录。
标签: entity-framework c#-4.0 entity-framework-4.1