我正在研究mvc项目,具有存储库模式和实体框架,现在在我的表单上我有一个示例模型
SampleModel
1)名称
2)年龄
3)地址
4)注释
5)更新日期
我只在编辑表格上显示以下数据
1)姓名
2)年龄
3)地址
现在,如果我使用存储库更新缺少属性值的模型,则notes,dateupdated字段为空.
我的问题是如何使用存储库更新少数选定的属性(tryupdatemodel在存储库中不可用),我不想调用原始对象并使用更新的模型映射属性.
有什么办法,一定有.
我遇到了在'乐观更新'的情况下我需要具有EF readonly属性的情况(你没有从数据库加载你的域对象的当前状态来检查实际改变了什么属性.你只需将你的对象设置为Modified和将其更新到数据库.在这种情况下,您可以避免冗余的选择和合并操作).
你不能写这样的东西:DataContext.Entry(entity).Property(propertyName).IsModified = false;,因为不支持设置'false'值,你会得到一个例外.(在EF 4.1中)
我已经创建了一个简单的结构,用于在存储库中注册readonly属性.因此,您可以轻松修改非限制性属性.
你怎么看待这件事?
public abstract class RepositoryBase<T> where T : class
{
private const string MethodReferenceErrorFormat = "Expression '{0}' refers to a method, not a property.";
private const string FieldReferenceErrorFormat = "Expression '{0}' refers to a field, not a property.";
protected IList<PropertyInfo> _readOnlyProperties;
/// <summary>
/// This method is used to register readonly property for Entity.
/// </summary>
/// <param name="propertyLambda">Entity property as LambdaExpression</param>
protected void RegisterReadOnlyProperty<TProperty>(Expression<Func<T, TProperty>> propertyLambda)
{
Guard.ArgumentNotNull(propertyLambda, "propertyLambda");
var …Run Code Online (Sandbox Code Playgroud) entity-framework readonly repository-pattern entity-framework-4 entity-framework-4.1