代码之家  ›  专栏  ›  技术社区  ›  Scott

使用.dbml设计器时,在哪里放置特定于模型的代码?

  •  0
  • Scott  · 技术社区  · 14 年前

    我正在构建一个ASP.NET MVC应用程序,供用户参加论文竞赛。我在SQL Server 2005中有一个论文表。我通过在服务器资源管理器中拖动表并将布局保存为(我将其命名为dal.dbml)来创建域模型。

    我现在尝试使用第11章中提到的方法在业务层中实现输入字段验证。 Pro ASP.NET MVC Framework 史蒂文·桑德森。但是,作者并没有像我一样创建他的模型,所以我不知道把我的模型特定的代码放在哪里。

    我考虑将它放入自动生成的dal.designer.cs文件中,但这似乎有问题。

    我还尝试创建一个新的班级,即论文必修课,在这里我做了论文必修课扩展论文。这几乎奏效了。

    它成功地显示了所有验证错误。

    但到了实际保存记录的时候:

    EssayTable.Context.Refresh(RefreshMode.KeepCurrentValues, essay);
    EssayTable.Context.SubmitChanges();
    

    我得到这个错误:

    类型“DomainModel.Entities.散文Required”未映射为表。

    我现在该怎么办?有没有更好的地方可以放置特定于域的代码,如果DB表发生更改,我必须删除并重新拖动该表,这些代码不会被清除?

    或者,有没有一种方法可以告诉应用程序,论文要求的对象应该放在论文表中。

    谢谢,斯科特

    1 回复  |  直到 14 年前
        1
  •  0
  •   Terje    14 年前

    您可以创建一个 partial Essay class 在与DBML文件相同的命名空间中。

    public partial class Essay
    {
        partial void OnCreated()
        {
           // handle additional stuff on creation, for instance.
        }
    }