【发布时间】:2013-09-02 14:15:31
【问题描述】:
好的,这就是我要解决的问题 - 我想将通过 linq 从 db 返回的对象属性分配给该对象 prperties 并获得更新任何更改的可能性,而无需在 db 中插入新行。
partial class Employee : Person
{
public Employee(int id = 0)
{
if (id > 0)
this.get(id);
}
public override bool get(int id)
{
Employee empl = db.Employees.Single(Employee => Employee.id == id);
if (empl != null)
{
// here I need to do sth like
this = empl;
// or
ObjectProperties.Copy(empl, this);
return true;
}
else
return false;
}
public override void save()
{
if (this.id > 0)
{
db.SubmitChanges();
}
else
{
db.Employees.InsertOnSubmit(this);
db.SubmitChanges();
}
}
public override void remove()
{
if (this.id > 0)
{
db.Employees.DeleteOnSubmit(this);
db.SubmitChanges();
}
}
}
而且我不想让 get 方法成为静态的。
【问题讨论】:
-
这有什么意义?您是否打算使用
ref之类的东西来将对该实例的所有引用完全更改为另一个实例?还是只想将MyClass(如id)的所有属性更新为新值? -
我只想更新 MyClass 的所有属性。
-
如果您只想更新 MyClass 的所有属性,那么您应该 a) 一次更新 MyClass 的所有属性或 b) 在 MyClass 中创建并调用一个更新所有属性的方法MyClass 一次一个或 c) 创建一个 MyClass 的新实例
-
如果您只是想将属性复制到您的对象,那么您可以创建一个简单的方法,使用
sourceObj.GetType().GetProperties();
标签: c#