【发布时间】:2008-12-31 22:58:17
【问题描述】:
我正在试用新的 SubSonic 3 预览版,但我不确定我应该在 MVC 项目中用于基本 CRUD 操作的模式。
我试图在我的模型中保留尽可能多的数据逻辑,因此我向每个模型的部分类添加了一些静态 CRUD 方法。
例如,假设我有一个配置表,它应该只有一条记录。所以,我的部分类可能看起来像这样:
public partial class Configuration{
// cut down; mocking hooks here IRL
private static IRepository<Configuration> Table = new MyRepository<Configuration>();
public static Configuration Retrieve()
{
var config = Table.GetAll().FirstOrDefault();
if (config == null)
{
config = new Configuration();
Table.Add(config);
}
return config;
}
public static void Update(Configuration target)
{
Table.Update(target);
}
}
目前,这不起作用,因为配置表有一个主键标识列,向表中添加新记录会引发标准的“无法为标识列插入显式值”错误。 SubSonic 3 似乎没有生成类,在更新它们时,它们可以很好地与数据库模式的规则配合使用(即,没有默认值,数据库中可以为空的值没有可以为空的原语等)。
现在,我可以更改我的表格和模式来解决这些问题,但我想知道我什么时候无法解决这个问题——什么时候我必须向数据库并有一个身份作为我的主键。
我也想知道这种模式是否正确。 SubSonic 为您提供了许多不同的方式来处理您的存储库业务,所以我不确定我应该使用哪一种。我想尽可能多地使用我的模型(否则为什么不只是 Linq to Sql?),所以我不想在尝试 CRUD 我的模型时使用 SubSonic 的查询构建优点。
我应该在这里做什么?任何关于在我的 MVC 项目中使用 SubSonic 3 的 CRUD 模式的建议都将受到欢迎和 +'d。也欢迎指向涵盖 SubSonic 3 的该主题但在 Google 搜索中排名不高的网站的链接...
直接询问 Rob (link here)。至少对于我的数据库,在生成的代码中有一个显示错误。啊,阿尔法软件。
更新
有了the release of Subsonic3,我们能不能稍微重新考虑一下这个问题?
【问题讨论】:
标签: subsonic subsonic3 subsonic-v3p2