C# linq2sql-在哪里登记事务(存储库或bll)?

C# linq2sql-在哪里登记事务(存储库或bll)?,c#,linq-to-sql,repository,C#,Linq To Sql,Repository,我的应用程序使用一个业务层,它调用一个使用linq到sql的存储库 我有一个Item类,它有一个enum类型属性和一个ItemDetail属性 我需要实现一个delete方法: 1始终删除该项目 2如果item.type为XYZ且ItemDetail不为空,则也删除ItemDetail 我的问题是,这种逻辑应该放在哪里 如果我喜欢在我的业务逻辑中使用它,那么这涉及两个单独的存储库调用,每个调用使用一个单独的datacontext。我将不得不包装这两个调用是一个System.Transaction

我的应用程序使用一个业务层,它调用一个使用linq到sql的存储库

我有一个Item类,它有一个enum类型属性和一个ItemDetail属性

我需要实现一个delete方法:

1始终删除该项目 2如果item.type为XYZ且ItemDetail不为空,则也删除ItemDetail

我的问题是,这种逻辑应该放在哪里

如果我喜欢在我的业务逻辑中使用它,那么这涉及两个单独的存储库调用,每个调用使用一个单独的datacontext。我将不得不包装这两个调用是一个System.Transaction,它在SQL2005中被提升为分布式事务,这并不理想

我可以将其全部移动到单个存储库调用,事务将由datacontext隐式处理,但我觉得这实际上是业务逻辑,因此不属于存储库

想法


Carrie

我不确定我是否真的理解了你的问题,但是如果是一个存储库,你能让存储库公开两种不同的方法来处理这两种类型的删除吗?那么,用于确定调用哪个存储库方法的逻辑将保留在业务层中它似乎最适合的位置


或者你可以在这篇文章中找到一些帮助:

有人对此有什么想法吗?