我目前有一堆像这样的存储库
IMyRepository
IAnotherRepository
它们都继承自IRepository(如果这有帮助的话)
如何让structuremap使用IRegistryConvention扫描程序来注册我命名的具体类型
SqlMyRepository
SqlAnotherRepository
我有一个CSharpCompilation包含SyntaxTrees 数组的实例,我试图找到从类继承的所有类声明
例如
// Not in syntax tree but referenced in project
public class Base{}
// In syntax tree, how to find all such classes?
public class MyClass : Base {}
Run Code Online (Sandbox Code Playgroud)
我尝试过一些东西但是对所有选项都有些困惑,似乎无法找到正确的方法来做到这一点.
我试图获取符号但这对继承的类型不起作用
SyntaxTree[] trees = context.CSharpCompilation.SyntaxTrees;
IEnumerable<ISymbol> symbols = context.CSharpCompilation.GetSymbolsWithName(x => x == typeof(Base).Name, SymbolFilter.Type);
Run Code Online (Sandbox Code Playgroud)
对Roslyn来说是一个新手,并且非常感谢任何有关如何实现这一目标的建议或指示.
在构建语法树时,roslyn 中是否有任何现有的方法或机制来清理 memberdeclarationsynxtax 节点的标识符名称?
例如带有空格、点、破折号或使用保留字如 class、void、string 的名称
[编辑] 澄清一下,代码将被生成,所以你不知道或提前控制输入,目标是清理输入。我指的是与 Path.GetInvalidFileNameChars() 等效的语法树,您可以使用它来清理用于创建目录和文件的输入。我在问 roslyn 是否有这样的机制。
我目前正在测试Db4o的asp.net MVC 2应用程序的想法,但有一些我不太确定的最佳方法.
我希望我的应用程序使用可猜测的路由而不是Id来引用我的实体,但我也认为我需要某种更新方案的Id.
所以我想要
/ country/usa而不是/ country/1
我可能想要更改密钥名称(不是在一个国家,而是在其他实体上),所以我想我需要一个Id作为参考来检索对象,然后再更新它的字段.从其他评论来看,UUID似乎有点长,无论如何都希望使用我自己的id来清晰地分离关注点.
看看KandaAlpha项目,我对设计的某些方面并不太热衷,而更喜欢S#arp架构中的一些东西,它们使用的东西如[domainsignature]和EntityWithTypedId,IEntityDuplicateChecker,IHasAssignedId,BaseObject和IValidatable in他们控制插入/更新行为的实体看起来更干净,更具可扩展性,涵盖了验证,并且很好地封装在核心和基本存储库类中.
因此,对于Db4o的S#arp架构的端口是否有意义,或者我仍然在想odbb世界中的rdbms?
在Db4o中管理索引(包括上面的唯一索引)是否也有最佳实践?它们应该是基于模型元数据并在引导程序中使用DI加载,还是应该加载更像Automapper.CreateMap?
这是一个我知道的一个漫无边际的问题,但任何想法,想法或建议的阅读材料都非常感谢.
谢谢Mac
我试图为数据库中的一堆行设置一些id,其中id列是一个标识.
我创建了一个游标来遍历行并使用递增的负数(-1,-2,-3等)更新id.
当我只更新一行打开IDENTITY_INSERT它工作正常,但一旦我尝试在游标中使用它,它会抛出以下错误.
消息8102,级别16,状态1,行22无法更新标识列'myRowID'.
DECLARE @MinId INT;
SET @MinId = (SELECT MIN(myRowId) FROM myTable)-1;
DECLARE myCursor CURSOR
FOR
SELECT myRowId
FROM dbo.myTable
WHERE myRowId > 17095
OPEN myCursor
DECLARE @myRowId INT
FETCH NEXT FROM myCursor INTO @myRowId
WHILE (@@FETCH_STATUS <> -1)
BEGIN
SET IDENTITY_INSERT dbo.myTable ON;
--UPDATE dbo.myTable
--SET myRowId = @MinId
--WHERE myRowId = @myRowId;
PRINT (N'ID: ' + CAST(@myRowId AS VARCHAR(10)) + N' NewID: ' + CAST(@MinId AS VARCHAR(4)));
SET @MinId = @MinId - 1;
FETCH NEXT FROM …Run Code Online (Sandbox Code Playgroud)