小编Sco*_*kay的帖子

StructureMap IRegistrationConvention注册非默认命名约定?

我目前有一堆像这样的存储库

IMyRepository
IAnotherRepository

它们都继承自IRepository(如果这有帮助的话)

如何让structuremap使用IRegistryConvention扫描程序来注册我命名的具体类型

SqlMyRepository
SqlAnotherRepository

structuremap configuration

8
推荐指数
1
解决办法
2925
查看次数

查找所有类声明而不是从Roslyn继承另一个类声明

我有一个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来说是一个新手,并且非常感谢任何有关如何实现这一目标的建议或指示.

c# roslyn

6
推荐指数
2
解决办法
4756
查看次数

清理 roslyn 成员声明语法标识符

在构建语法树时,roslyn 中是否有任何现有的方法或机制来清理 memberdeclarationsynxtax 节点的标识符名称?

例如带有空格、点、破折号或使用保留字如 class、void、string 的名称

[编辑] 澄清一下,代码将被生成,所以你不知道或提前控制输入,目标是清理输入。我指的是与 Path.GetInvalidFileNameChars() 等效的语法树,您可以使用它来清理用于创建目录和文件的输入。我在问 roslyn 是否有这样的机制。

c# roslyn

4
推荐指数
1
解决办法
813
查看次数

Db4o Mvc应用程序架构

我目前正在测试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

db4o s#arp-architecture

2
推荐指数
1
解决办法
509
查看次数

游标内部的IDENTITY_INSERT ON不允许插入id

我试图为数据库中的一堆行设置一些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)

t-sql sql-server cursor identity-insert

2
推荐指数
1
解决办法
1506
查看次数