我正在尝试理解和设计您的应用程序/域模型(POCO/DTO)的良好实践.
假设我有以下数据库表,帐户:
UserID int
Email varchar(50)
PasswordHash varchar(250)
PasswordSalt varchar(250)
Run Code Online (Sandbox Code Playgroud)
当然,EF4会像这样构建实体:
public class Account
{
public int UserID { get; set; }
public string Email { get; set; }
public string PasswordHash { get; set; }
public string PasswordSalt { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在,假设我有一个用于注册新用户的视图模型,可能看起来像这样:
public class RegistrationViewModel
{
public string Email { get; set; }
public string Password { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
最后,我有一个需要注册用户的服务:
public class RegistrationService
{
public void RegisterUser(??? registration)
{
// Do stuff to register user …Run Code Online (Sandbox Code Playgroud) 我有提交日期时间的实体类,我想选择不同的'mon-yyyy'格式的datetime字段值并填充下拉列表.
以下代码给出了错误:
var env = db.Envelopes.Select(d => new
{
d.ReportDate.Year,
d.ReportDate.Month,
FormattedDate = d.ReportDate.ToString("yyyy-MMM")
}).Select(d => d.FormattedDate)
List<SelectListItem> _months = new List<SelectListItem>();
foreach (var mname in env)
{
_months.Add(new SelectListItem() { Text = mname, Value = mname });
}
Run Code Online (Sandbox Code Playgroud)
错误信息:
LINQ to Entities无法识别方法'System.String ToString(System.String)'方法,并且此方法无法转换为商店表达式.
如何更正此错误消息?
谢谢SR
我在项目中实施了EF 4.在其中,有表客户和订单.其中一个(客户)与多个(订单)有关系.
我正在为(CustomerViewModel和OrderViewModel)创建一个viewmodel,从我的域层传递到接口层(在本例中为MVC).
现在的问题是"我需要在customerviewmodel同时引用视图模型?例如已经IEnumerable<OrderViewModel>在orderviewmodel已CustomerViewModel.如果让我怎么设计它(作为最佳实践),以便IEnumerable<OrderViewModel>和CustomerViewModel填充了正确的参考?
我有两个实体:
public class ParentThing
{
[Key]
public int Id { get; set; }
[Required]
public ChildThing TheFirstThing { get; set; }
public ChildThing TheSecondThing { get; set; }
}
public class ChildThing
{
[Key]
public int Id { get; set; }
[Required]
public string Code { get; set; }
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
和视图模型:
public class ParentViewModel
{
public string Message { get; set; }
public ParentThing ParentThing { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
和一个观点:
@using (@Html.BeginForm()) …Run Code Online (Sandbox Code Playgroud) 这是我的数据传输对象
public class LoadSourceDetail
{
public string LoadSourceCode { get; set; }
public string LoadSourceDesc { get; set; }
public IEnumerable<ReportingEntityDetail> ReportingEntity { get; set; }
}
public class ReportingEntityDetail
{
public string ReportingEntityCode { get; set; }
public string ReportingEntityDesc { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这是我的ViewModel
public class LoadSourceViewModel
{
#region Construction
public LoadSourceViewModel ()
{
}
public LoadSourceViewModel(LoadSourceDetail data)
{
if (data != null)
{
LoadSourceCode = data.LoadSourceCode;
LoadSourceDesc = data.LoadSourceDesc;
ReportingEntity = // <-- ? not sure …Run Code Online (Sandbox Code Playgroud)