作者:梁利锋 标签:DotNet, DbEntry

782天前 (阅读:1006)

DbEntry With Asp.Net MVC

简介

DbEntry.Net 在配合 Asp.Net MVC 的时候,有一个问题,就是对于想把字段值改为缺省值(比如long型字段,数据库中是5,想要改成0),会失效。

这是因为 DbEntry 的“部分更新”功能,会忽略未修改的字段,而 Asp.Net MVC 的缺省的 ModelBinder 在创建 Edit 页面的对象时并不是先从数据库读取,而是直接创建对象,这样,本来就是缺省值,再改成缺省值,DbEntry 会认为没有改动,所以不会执行这个字段的更新。

以前, 曾经提供过一个编译时配置 AddCompareToSetProperty 来解决这个问题,在 Leafing.Processor.exe.config 中使用这个配置的话,可以禁用 DbEntry 的部分更新功能,从而达到修改成缺省值的目的。

不过这毕竟不是一个好的解决方案,所以现在提供这样一个例子,让 Asp.Net MVC 在使用 DbEntry 的时候也可以使用部分更新功能。

用法

复制 DbEntryWithAspNetMvc 目录下的 DbEntryModelBinder.cs 文件到你的 MVC Application 目录下,在 Global.asax.cs 文件中的 Application_Start 函数中新增一句代码:

DbEntryModelBinderHelper.Init();

其他

这个项目,是一个完整的 Asp.Net MVC 4 的项目,可以运行,配置成了使用 SQLite 1.0.66.0,你可以自行下载它的驱动程序,并复制的 bin 目录即可。或者你也可以修改配置文件,把它改成 DbEntry 支持的其它数据库。

之所以没有把 DbEntryModelBinder 加入 DbEntry 中,而是提供这样一个例子,在于不想编译太多针对不同版本的 Asp.Net MVC 的 DLL。

Usage

Copy DbEntryModelBinder.cs in DbEntryWithAspNetMvc folder to your MVC Application folder. Add following code to your Application_Start function in Global.asax.cs :

DbEntryModelBinderHelper.Init();

下载

DbEntryWithAspNetMvc on Github