我有一个库函数,它返回Linq查询中的域对象列表。
IList<Apple> getApplesByCriteria( ... );
我将DataGridView的DataSource属性绑定到此函数的结果。一切都很好。现在我想操纵Apple的属性。表示域对象(UIApple)与原始域对象(Apple)不同,其中
UIApple map( Apple apple );
将一个转换为另一个。
如果我创建一个中间类--UIApple,我需要做些什么才能将DataGridView的编辑持久化回数据库?我了解到添加[Browsable(false)]
可以隐藏一个列。但是,我不想1)用UI概念污染域对象; 2)更改自动生成的源代码。
答案 0 :(得分:0)
我创建了由Apple支持的UIApple并包含所有操作代码。
例如:
class Apple {
// generated by Visual Studio
public int Color { ...
}
class UIApple {
private Apple _domain;
public string Color
{
get { if(_domain.Color == 0) return "Black"; }
set { if(value == "Black") _domain.Color = 0; }
}
// hide all unwanted attributes
}
在编辑结束时保持
UIApple uiApple;
// some editing through UI
// to commit -
db.SubmitChanges();