我是MVC的新手,我只是想建立一个简单的网站。 我首先使用EF代码。我的问题是MVC总是在寻找一个我不想要永久存储的模型的数据库表(我只是在使用它时初始化它的一个对象) 这是我的代码:
public class Family
{
public int FamilyId { get; set; }
public String FamilyName { get; set; }
public String FamilyJoinString { get; set; }
public String MemberIds { get; set; }
public virtual List<FamilyMember> Members { get; set; }
public List<FamilyMember> GetFamilyMembers()
{
var db = new HomeTrackerDb();
var CommonHelper = new CommonHelper();
var members = new List<FamilyMember>();
var memberids = MemberIds;
var ids = CommonHelper.SplitToList(memberids, ",");
foreach (var id in ids)
{
var user = db.UserInfoes.Find(int.Parse(id));
var member = new FamilyMember();
member.FamilyMemberId = user.UserInfoId;
member.FamilyMemberName = user.UserName;
member.FamilyMemberLoad = 0;
members.Add(member);
}
db.Dispose();
return members;
}
}
//FamilyMember Class
public class FamilyMember
{
public int FamilyMemberId { get; set; }
public String FamilyMemberName { get; set; }
public int FamilyMemberLoad { get; set; }
}
}
我只在控制器中生成FamilyMember列表,并且没有DB更新,插入和查找操作。 控制器:
public ActionResult Edit(int id)
{
Family family = db.Families.Find(id);
family.Members = family.GetFamilyMembers();
return View(family);
}
但是MVC总是说找不到数据库表FamilyMembers。
请帮忙!
答案 0 :(得分:3)
看起来Family是数据库中的表,而Family类是映射到Family表的实体。
由于您将List<FamilyMember> Members
作为Family类的属性,因此EF会尝试将该属性映射到相关表。
为了向EF发出信号以不映射该属性,请添加[NotMapped]
属性:
[NotMapped]
public virtual List<FamilyMember> Members { get; set; }
这假设您没有使用Fluent API。如果您正在使用Fluent,那么您可以这样指定:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Family>().Ignore(t => t.Members);
base.OnModelCreating(modelBuilder);
}
答案 1 :(得分:0)
您指定自动转换为表格映射的public virtual List<FamilyMember> Members { get; set; }
,例如similar mapping
如果你不想在你的例子中映射属性,你可以将它的可见性改为internal
,但我建议不要使用这样的解决方案,对我来说更好的方法是:
public class Family
{
[Key]
public int FamilyId { get; set; }
public String FamilyName { get; set; }
public String FamilyJoinString { get; set; }
public IList<UserInfoes> Members { get; set; }
}
public class Family
{
[Key]
public int UserInfoId { get; set; }
public Family Family { get; set; }
public string UserName { get; set; }
}