您好,我正在尝试创建一个基本的数据模型/层
我们的想法是:
任务Task = TaskRepository.GetTask(2);
task.Description =“任务已更改”;
task.Save();
这个是可能的吗?我试过下面的代码
注意: TaskRepository.GetTask()方法分离任务实体。
我希望它能工作,你知道为什么它不能工作吗?
谢谢
public partial class Task
{
// Place custom code here.
public void Save()
{
using (TinyTaskDataContext db = new TinyTaskDataContext { Log = Console.Out })
{
db.Task.Attach(this);
db.SubmitChanges();
}
}
#region Metadata
// For more information about how to use the metadata class visit:
// http://www.plinqo.com/metadata.ashx
[CodeSmith.Data.Audit.Audit]
internal class Metadata
{
// WARNING: Only attributes inside of this class will be preserved.
public int TaskId { get; set; }
[Required]
public string Name { get; set; }
[Now(EntityState.New)]
[CodeSmith.Data.Audit.NotAudited]
public System.DateTime DateCreated { get; set; }
}
#endregion
}发布于 2010-09-08 15:30:47
在做了一些阅读之后,我意识到我错误地实现了Repository模式。出于约定的原因,我应该将Save方法添加到存储库。
然而,我在提交断开连接的数据集时遇到的实际问题是由于乐观并发。datacontext的工作是跟踪其实体的状态。当实体断开连接时,您将失去该状态。
我发现您需要向数据库表添加一个时间戳字段,或者我可以在我的dbml文件中的每一列上设置UpdateCheck字段。
以下是有关UpdateCheck的一些信息
有关断开连接的Linq和plinqo的一些有用链接
Great info on implementing the Repository pattern with LINQ
Short tutorial for implementing for updating and reattaching entities
Rick Strahl on LINQ to SQL and attaching Entities
发布于 2010-09-08 09:36:14
不需要此行(Task task = new Task();)。上面的方法应该可以工作,尽管我从来没有见过它以这种方式实现。您是否考虑过使用管理器?你遇到什么运行时错误了吗?
谢谢-Blake Niemyjski
https://stackoverflow.com/questions/3661021
复制相似问题