如果我有 LINQ 对象:
public class SampleDataContext : DataContext {
public Table<Customer> Customers { get { return this.GetTable<Customer>(); } }
public SampleDataContext( string connectionString ) : base( connectionString ) { }
}
[Table( Name="dbo.tblCustomers" )]
public class Customer {
private Guid? customerID;
[Column( Storage="customerID", DbType="uniqueidentifier NOT NULL", IsPrimaryKey=true )]
public Guid? CustomerID {
get { return this.customerID; }
set { this.customerID = value; }
}
private string customerName;
[Column( Storage = "customerName", DbType = "nvarchar(255) NOT NULL" )]
public string CustomerName {
get { return this.customerName; }
set { this.customerName = value; }
}
}
以及应用程序中的其他地方:
public static void DoSomethingWithCustomer( Customer customer ) {
// some operations
// now, I want save changes to the database
}
如何获取跟踪“客户”对象更改的 DataContext 实例?
编辑:为什么我不想将 DataContext 传递给方法。
1) 始终传递 2 个对象而不是 1 个是整个应用程序的“丑陋”模式。
- 每个业务对象的方法都需要下一个参数。
- 收藏将需要从“列表”更改为“列表>”。
这两点将更难维护 - 开发人员必须每次都设置正确的 DataContext 实例(容易创建错误),尽管 DataContext 知道具体对象是否附加到另一个 DataContext。
2)我想要(当前版本的应用程序使用它)处理来自不同“地方”的对象集合的“任何”业务逻辑(例如,通过拖放操作浮动窗口)。
Currentyl 我们使用自定义类型的数据集,因此有关更改的信息位于数据行(DataRow = 业务对象)中,获取它没有问题,或者创建一个克隆然后将其保存到数据库中。