【问题标题】:Where to put Model-specific code when using .dbml designer?使用 .dbml 设计器时在哪里放置特定于模型的代码?
【发布时间】:2010-01-21 04:00:55
【问题描述】:

我正在构建一个 asp.net mvc 应用程序,供用户参加论文比赛。我在 sql server 2005 中有一个 Essay 表。我通过拖动服务器资源管理器中的表并将布局保存为我命名为 DAL.dbml 的内容来创建我的域模型。

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

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

我还尝试创建一个新类 EssayRequired.cs,在其中我使 EssayRequired 扩展了 Essay。这几乎奏效了。

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

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

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

我收到此错误:

“DomainModel.Entities.EssayRequired”类型未映射为表。

关于我现在应该做什么有什么想法吗?有没有更好的地方来放置特定于域的代码,如果 db 表发生更改并且我必须删除并重新拖动表,这些代码不会被清除?

或者有没有办法告诉应用 EssayRequired 对象应该放在 Essay 表中?

谢谢,斯科特

【问题讨论】:

    标签: asp.net-mvc linq-to-sql


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-17
      • 2015-10-31
      • 2015-10-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多