小编Hon*_*ode的帖子

使用Entity Framework保存对SQL Server数据库的更改时,一个或多个实体的验证失败

我想保存我的编辑到数据库,我在ASP.NET MVC 3/C#中使用实体框架代码优先,但我收到错误.在我的Event类中,我有DateTime和TimeSpan数据类型,但在我的数据库中,我分别有日期和时间.这可能是原因吗?在保存对数据库的更改之前,如何在代码中转换为适当的数据类型.

public class Event
{
    public int EventId { get; set; }
    public int CategoryId { get; set; }
    public int PlaceId { get; set; }
    public string Title { get; set; }
    public decimal Price { get; set; }
    public DateTime EventDate { get; set; }
    public TimeSpan StartTime { get; set; }
    public TimeSpan EndTime { get; set; }
    public string Description { get; set; }
    public string EventPlaceUrl { get; set; }
    public Category Category …
Run Code Online (Sandbox Code Playgroud)

c# sql asp.net-mvc entity-framework code-first

333
推荐指数
6
解决办法
31万
查看次数

MVC的最佳实践..使用接口的ViewModel绑定示例

我是ASP.NET MVC 3.0的新手,并尝试使用MVC ViewModel设计构建应用程序.

我想知道最佳做法是为ViewModel重新调整控制器,并在下面提出几个问题.这是我目前的理解(这可能是错误的)..

  • 我们创造模型.
  • 通过创建一个新类并使用与基本模型类相同的名称和类型声明属性来创建ViewModel(包括您稍后要更新的基本模型的ID字段......并且这些类不以任何方式链接).
  • 为每个基本模型创建一个存储库(以查找和保存数据等).
  • 为每个ViewModel创建一个Controller操作(访问基类的存储库以检索值并将这些值放入ViewModel,然后将ViewModel传递给ViewModels视图).
  • 从ViewModel创建视图(ViewModel视图)
  • 在ViewModel控制器中,Update(POST)方法接收更新的ViewModel对象并将其转换为基础模型对象(也许使用Automapper?),接下来使用它们的存储库保存基础模型对象并应用这样的绑定?"TryUpdate <'IPerson>(person)","TryUpdate <'IPlace>(地点);" (这看起来不对,目的是将值从ViewModel放回基类,应用绑定,使用存储库保存基本模型!这似乎不使用存储库..而不是TryUpdate <'IPerson> (人);我希望看到这样的东西:person.Save(IPerson)..其中"人包含值",".存储是存储库","IPerson包含用于绑定的绑定属性"? ..不确定这是不是..

到目前为止,我已经通过创建一个新类并使用相同的名称添加来自不同基本模型的属性来创建ViewModel.此时我有以下问题:

问题1:每个ViewModel是否都有自己的控制器并访问每个基本模型存储库类以获取其值?

Q2:在ViewModel中,您是否应该包含使用属性的所有基本模型的ID字段,考虑到您可能希望通过ViewModels Controller将Update更新回基础模型库(需要ID值)?

问题3:如何使用接口绑定属性,以使用存储库来保存控制器中的模型.

我一直无法找到解释一步一步示例中的所有内容的教程或资源,完整的答案将是以下示例:

  • 2x简单模型,1x简单viewModel,1x接口用于绑定,1x简单控制器使用接口类进行绑定更新,1x存储库.. ie

//型号1

public class Person
{
  int PersonID {get;set;}
  string FirstName {get;set;}
  string LastName {get;set;}
  DateTime DOB {get;set}
}
Run Code Online (Sandbox Code Playgroud)

//模型2

public class Place
{
  int PlaceID {get;set;}
  string Description {get;set;}
  string AreaType {get;set;}
  string PostCode {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

// ViewModel(包含模型中的属性)

publc class ViewModel
{
  //Person attributes
  int PersonID {get;set;}
  string FirstName {get;set;}
  string LastName {get;set;}

  //Place attributes …
Run Code Online (Sandbox Code Playgroud)

asp.net asp.net-mvc entity-framework c#-4.0 asp.net-mvc-3

12
推荐指数
1
解决办法
1万
查看次数