我有一个用户模型,定义是
public class User
{
public string UserID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string FullName {
get
{
return (FirstName + " " + LastName).Trim();
}
}
public string EmailID { get; set; }
public UserAccessLabel AccessLabel { get; set; }
public string Password { get; set; }
public string PasswordStore {
get
{
string hashPass;
using (Encryption enc = new Encryption())
{
enc.Key = EncryptionKey.DefaultKey;
hashPass = enc.Encrypt(Password);
}
return hashPass;
}
set
{
string hashPass;
using (Encryption enc = new Encryption())
{
enc.Key = EncryptionKey.DefaultKey;
hashPass = enc.Decrypt(value);
}
Password = hashPass;
}
}
public byte[] Image { get; set;}
}
和fluentAPI配置类是
public class UserConfig : EntityTypeConfiguration<User>
{
public UserConfig()
{
ToTable("tblUsers");
HasKey(k => k.UserID);
Property(p => p.FirstName).IsRequired();
Property(p => p.LastName).IsRequired();
Property(p => p.PasswordStore).IsRequired().HasColumnName("Password");
Property(p => p.Image).HasColumnType("image");
Ignore(i => i.FullName);
Ignore(i => i.Password);
}
}
我还有很多其他型号,如产品,类别,客户等。每个型号都有已创建和已更新属性,这些属性都是用户。
我的问题是,我是否必须在用户模型中创建所有模型集合属性?
类似
public ICollection<Product> Products { get; set; }
public class ProductConfig:EntityTypeConfiguration<Product>
{
public ProductConfig()
{
ToTable("tblProducts");
HasKey(k => k.Code);
Property(p => p.Title).IsRequired();
Property(p => p.Title).HasMaxLength(100);
HasRequired(c => c.Category).WithMany(p => p.Products).HasForeignKey(f => f.CategoryID).WillCascadeOnDelete(false);
HasRequired(u => u.Created).WithMany(p => p.Products).HasForeignKey(f => f.CreatedUser).WillCascadeOnDelete(false);
HasRequired(u => u.Updated).WithMany(p => p.Products).HasForeignKey(f => f.UpdatedUser).WillCascadeOnDelete(false);
}
}
提前致谢
答案 0 :(得分:0)
我认为你要做的是在你的代码第一个数据库中建立一对多的关系。 public ICollection<Product> Products { get; set; }
是使每个user
成为许多 products
的所有者的正确语法。然后在产品模型文件中,您将为其用户包含一个外键。
public class Product
{
public virtual User ProductsUser {get; set;}
}
答案 1 :(得分:0)
如果您不需要这些系列,那么您就不必这样做了。它足以在这些实体上具有FK属性,并在DbContext中具有相应的DbSet属性。
<强>更新强>
如果您的意思是FK id列不为空但对象字段为null
,则这是因为默认情况下不加载它们。您可以通过调用扩展方法Include
来加载它们
context.Products.Include("Created")