EF4 +忍者+扩展方法 +存储库

发布于 2024-10-24 01:52:03 字数 451 浏览 1 评论 0原文

我有一个带有 Category 表的 EF4.Model,它将使用 NestedSet 模式来存储子/父关系,我认为这意味着 EF4 无法帮助其工厂方法检索子项,因为不会有子项或 parentId,只有左和右。

我创建了一个 CategoryModelExtensions 静态类,但为了检索子级,我需要一个变量来引用存储库。

但是,当静态类中不允许使用构造函数时,如何注入该变量呢?

我不想在存储库中创建 Children() 方法,因为我希望能够编写。

Category c = _repo.Get(1);
IList<Category> children = c.Children();

帮助?如果我的问题不清楚,请在这里提及,我会根据需要进行更新。

I have an EF4.Model with Category table which will be using the NestedSet pattern to store child/parent relation, which I think means that EF4 cannot help with its factory methods in retrieving the children becoz there will be no children or parentId, just left and right.

I created an CategoryModelExtensions static class, but for the children to be retrieved I will need a variable to refer to the repository.

But how can I inject that variable when constructors are not allowed in static classes?

I didn't want to create the Children() method in the repository for I want to be able to write.

Category c = _repo.Get(1);
IList<Category> children = c.Children();

Help? If my question is not clear please mention it here and I will update it as needed.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

星光不落少年眉 2024-10-31 01:52:03

你可以直接传递它:

public static IList<Category> Children(this Category category, IMyRepository<Category> categories)
{
     // do stuff
}

IList<Category> children = c.Children(_repo);

You could just pass it explicitly:

public static IList<Category> Children(this Category category, IMyRepository<Category> categories)
{
     // do stuff
}

IList<Category> children = c.Children(_repo);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文