gpt4 book ai didi

c# - 从 ASP.Net MVC5 中的两个 EF 模型创建 ViewModel

转载 作者:行者123 更新时间:2023-11-30 20:52:35 25 4
gpt4 key购买 nike

我一直在四处搜索,但确实找不到关于如何构建 ViewModel 然后用我的 EF 模型中的数据填充它的合适答案。我想要推送到单个 ViewModel 中的两个 EF 模型是:

public class Section
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity), HiddenInput]
public Int16 ID { get; set; }

[HiddenInput]
public Int64? LogoFileID { get; set; }

[Required, MaxLength(250), Column(TypeName = "varchar"), DisplayName("Route Name")]
public string RouteName { get; set; }

[Required, MaxLength(15), Column(TypeName = "varchar")]
public string Type { get; set; }

[Required]
public string Title { get; set; }

[HiddenInput]
public string Synopsis { get; set; }

[ForeignKey("LogoFileID")]
public virtual File Logo { get; set; }
}

public class File
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Int64 ID { get; set; }

[Required, MaxLength(60), Column(TypeName = "varchar")]
public string FileName { get; set; }

[Required, MaxLength(50), Column(TypeName = "varchar")]
public string ContentType { get; set; }
}

我想构建一个如下所示的 ViewModel:

public class SectionViewMode
{
public Int16 SectionID { get; set; }

public bool HasLogo { get; set; } //Set to True if there is a FileID found for the section
public string Type { get; set; }
public string Title { get; set; }
public string Synopsis { get; set; }
}

我认为最好在 ViewModel 中创建一个构造方法,这样当 NEW 被调用时,数据就会被填充,但我似乎无法找到或弄清楚我是如何开始填充该数据。

最佳答案

这是一种紧耦合方法,因为您的 View 模型与领域模型耦合。我个人不喜欢这种方式。我会选择另一种从我的域模型映射到 View 模型的映射方法

如果你真的想要构造函数方法,你可以将 Section 对象传递给构造函数并设置属性值。

public class SectionViewModel
{
public SectionViewModel(){}
public SectionViewModel(Section section)
{
//set the property values now.
Title=section.Title;
HasLogo=(section.Logo!=null && (section.Logo.ID>0));
}

public Int16 SectionID { get; set; }
public bool HasLogo { get; set; }
public string Type { get; set; }
public string Title { get; set; }
public string Synopsis { get; set; }
}

当你想创建你的 View 模型对象时,

Section section=repositary.GetSection(someId);
SecionViewModel vm=new SectionViewModel(section);

关于c# - 从 ASP.Net MVC5 中的两个 EF 模型创建 ViewModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20775802/

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