0
我有一个项目中的类,我正在建立一个代码优先的风格。问题很简单。有问题的对象是用户和用户类型。对象没有出现在Code First - MVC3项目
public class User
{
[Key]
public int id { get; set; }
[DisplayName("User Name")]
[Required(ErrorMessage = "User Name is required.")]
public string userName { get; set; }
[DataType(DataType.Password)]
[DisplayName("Password")]
[Required(ErrorMessage = "Password is required.")]
public string userPassword { get; set; }
[DisplayName("First Name")]
public string first_Name { get; set; }
[DisplayName("Last Name")]
public string last_Name { get; set; }
[DisplayName("Email")]
public string email { get; set; }
[DisplayName("Zip")]
public string Zip { get; set; }
[DisplayName("Address")]
public Address address { get; set; }
[DisplayName("Birthdate")]
public DateTime dateOfBirth { get; set; }
[DisplayName("Home phone")]
public string homePhone { get; set; }
[DisplayName("Cell phone")]
public string cellPhone { get; set; }
[DisplayName("Remember me")]
public bool persistCookie { get; set; }
public UserType userType { get; set; }
public int status { get; set; }
}
和
public class UserType
{
[Key]
public int id { get; set; }
public string typeName { get; set; }
}
我生成一个用户是这样的:
userType = (from ret in db.UserTypes where ret.typeName.Equals("Contractor") select ret).FirstOrDefault();
user.userType = userType;
user.status = 1;
db.Users.Add(user);
db.SaveChanges();
数据库模式似乎支持外键UserTypes表。
在添加和数据库中一切正常,我看到了具有相应userType_id的用户记录。
问题出现在我稍后检索用户时。我的User.userType始终为空。这让我非常困惑。如果用户类型关键是在用户表备案,为什么我没有得到一个UserType对象我的用户的一部分,当我使用一个标准的LINQ查询一样得到用户:
User user = (from ret in db.Users where ret.userName.Equals(userIn.userName) && ret.userPassword.Equals(userIn.userPassword) select ret).FirstOrDefault();
我得到的用户,但user.userType始终为空。
我在这里错过了什么?
我应该建立一个不同的LINQ查询吗?
不应该将userType对象自动包含在User对象中吗?
我认为Code First编程风格是一种很好的方法,但这个问题令我感到困惑。
感谢您的帮助!