Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 关于修改NetTiers的建议_C#_Code Generation_.nettiers - Fatal编程技术网

C# 关于修改NetTiers的建议

C# 关于修改NetTiers的建议,c#,code-generation,.nettiers,C#,Code Generation,.nettiers,我同意在我的下一个项目中使用NetTiers 问题是: 我的模式中的每个表都有一个字段AccountId。对于DAL的每个请求,我希望它成为传递AccountId并在查询中用作筛选器的要求 如果生成使用此参数的额外重载,则可以接受 我怀疑这个功能不是内置的,所以有人能提供一些建议,从哪里开始修改模板来添加它吗?一旦您了解了NetTiers模板生成的错综复杂的类,修改NetTiers模板就不难了,但它通常非常乏味,而且非常容易出错 我的第一个假设是,您正在生成的数据库要么只有几个表,要么是非规范化

我同意在我的下一个项目中使用NetTiers

问题是: 我的模式中的每个表都有一个字段AccountId。对于DAL的每个请求,我希望它成为传递AccountId并在查询中用作筛选器的要求

如果生成使用此参数的额外重载,则可以接受


我怀疑这个功能不是内置的,所以有人能提供一些建议,从哪里开始修改模板来添加它吗?

一旦您了解了NetTiers模板生成的错综复杂的类,修改NetTiers模板就不难了,但它通常非常乏味,而且非常容易出错

我的第一个假设是,您正在生成的数据库要么只有几个表,要么是非规范化的——否则,在每个表中都有AccountId列是没有意义的。如果是后者,并且结构无法正常化,那么它认为将所有基于数据库外键(包括DeepLoads)的内置导航属性与额外的AccountId过滤器结合使用将是一个相当大的改变

另外,您提到添加包含AccountId的重载将是一个可接受的解决方案。但是,这将使任何DAL使用者都不需要AccountId参数的现有NetTiers重载

无论如何,下面是您需要研究的一些领域的摘要:

  • 为了确保在不提供AccountId的情况下无法成功执行任何查询(例如,有很多方法可以通过
    GetPaged@where
    子句绕过默认的DAL),您可能需要在SQL层进行更改。这些模板位于
    /DataAccessLayer.*Client/
    文件夹中。假设您使用的是sql server,则可以修改生成sql的文件(
    StoredProcedureProvider.cst
    ),以确保始终传递@AccountId参数

  • 这将导致相关文件的更改,例如和可能

  • 这反过来会导致实体层()中的更改,例如
    EntityBaseCore.generated.cst
    EntityInstanceBase.generated.cst


我的一般建议是,虽然几年前NetTiers和CodeSmith是构建DAL的首选工具,但我不建议现在走这条路。随着微软实体框架和开源NHibernate的发展,您不必再深入数据访问管道层(即使只是在代码生成级别)

关于从哪里开始的一些很好的建议,从整体上来说,而不是具体地问我的问题。谢谢