gpt4 book ai didi

c# - Entity Framework MVC 4 类问题

转载 作者:太空宇宙 更新时间:2023-11-03 19:18:56 25 4
gpt4 key购买 nike

我正在尝试使用 Entity Framework 和 ASP.Net MVC 4 构建代码优先数据库。

我是 MVC 和 Entity Framework 的新手,我正在为如何设计我的类对象而苦苦挣扎。

我想要一个 Members 类,就像下面的类一样,它具有 AddressInformation 类的数据属性:-

 public class Member
{
public virtual int MemberID { get; set; }
public virtual string Forename { get; set; }
public virtual string Surname { get; set; }
public virtual int age { get; set; }
public virtual AddressInformation Address { get; set; }
public virtual string EmailAddress { get; set; }
public virtual string HomePhoneNumber { get; set; }
public virtual string MobileNumber { get; set; }
}



public class AddressInformation
{
public virtual int MemberID { get; set; }
public virtual string HouseNoName { get; set; }
public virtual string StreetName { get; set; }
public virtual string Town { get; set; }
public virtual string County { get; set; }
public virtual string PostCode { get; set; }
public virtual string Country { get; set; }
}

我还有另一个继承自 DbContext 的类:-

public class CentralDataStore :DbContext
{
public DbSet<Member> Members { get; set; }
public DbSet<AddressInformation> AddressInfo { get; set; }
}

当我添加 Controller 时,我无法输入 AddressInformation,只有成员信息填充到我的 View 中。

有人建议最好的攻击方法吗?正如我所说,我是 MVC 的新手。

最佳答案

您无需将所有属性设为虚拟,只需将用于导航的属性设为虚拟即可。您需要使用 Fluency API 设置 Member 和 AddressInformation 之间的关系。此外,您的主键需要命名为 Id 或使用属性或 Fluency API 来指定它是主键。您还缺少用于将成员映射到 AddressInformation 的 ID。您的类定义应该如下所示。

public class Member
{
public int ID { get; set; }
public string Forename { get; set; }
public string Surname { get; set; }
public int age { get; set; }
public virtual int AddressId { get; set; }
public virtual AddressInformation Address { get; set; }
public string EmailAddress { get; set; }
public string HomePhoneNumber { get; set; }
public string MobileNumber { get; set; }
}

public class AddressInformation
{
public int ID { get; set; }
public string HouseNoName { get; set; }
public string StreetName { get; set; }
public string Town { get; set; }
public string County { get; set; }
public string PostCode { get; set; }
public string Country { get; set; }
}

请注意,我添加了属性 AddressId 以提供到 AddressInformation 对象/表的映射。像这样在 Fluency API 中配置关系。

public class MemberConfig : EntityTypeConfiguration<Member>
{
internal MemberConfig()
{
this.HasKey(m => m.ID);
this.HasRequired(m => m.Address)
.WithRequiredDependent(a => a.ID)
.HasForeignKey(m => m.AddressId);

}
}

通过设置外键关系,EF会自动加载AddresssInformation到Member对象中。

关于c# - Entity Framework MVC 4 类问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13978625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com