我们非常庞大的代码库有数百个ExecuteMethodCall调用,遵循以下模式:
[Function(Name = "dbo.storedproc")]
public ISingleResult<UserData> GetUserData(
[Parameter(Name = "UserId", DbType = "BigInt")] long? userId)
{
IExecuteResult result = ExecuteMethodCall(this, ((MethodInfo)(MethodBase.GetCurrentMethod())), userId);
return ((ISingleResult<UserData>)(result.ReturnValue));
}
Run Code Online (Sandbox Code Playgroud)
但是,这会产生巨大的性能问题(Linq To SQL的众所周知的问题).所以我期待将这些代码中的至少一部分转换为Compiled Linq To Sql.
我找到了Compiled Linq To Sql的例子,但没有一个涉及ExecuteMethodCall.相反,它们都编译了一个Linq查询(来自...... where ... select).
如果有人能给我一个上述代码(使用ExecuteMethodCall)转换为Compiled Linq To SQL的示例,我将不胜感激.
我有一个.d.ts文件,其中包含描述我的库的接口.它有JSDoc注释,当人们在代码中引用.d.ts时,它将通过Visual Studio中的intellisense显示:
/** Description of JSNLogAppender */
interface JSNLogAppender {
/* Description of setOptions */
setOptions(options: JSNLogAppenderOptions): void;
/* Description of log */
log(logItem: JSNLogItem): void;
}
... etc ...
Run Code Online (Sandbox Code Playgroud)
我需要基于JSDoc和TypeScript接口生成文档.问题是我发现的所有生成器都使用JavaScript,并且接口不会编译为JavaScript.我可以将JSDoc放在实现接口的实际类和函数上,但是当人们引用.d.ts文件时,我会丢失智能感知.
是否有一个工具可以从.d.ts文件中的JSDoc注释和TypeScript接口定义生成html文档?
我有一个本地MongoDb数据库实例(通过从Windows命令行运行mongod创建),以及一个简单的控制台程序,它尝试使用Serilog及其MongoDb接收器将字符串记录到MongoDb数据库:
var log = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.ColoredConsole()
.WriteTo.MongoDB("mongodb://localhost/mydb")
.CreateLogger();
log.Fatal("Fatal message");
Run Code Online (Sandbox Code Playgroud)
"致命消息"消息正确写入控制台,但不是我的MongoDb数据库.
我目前的MongoDb数据库是"mydb".根据"show collections",我只有集合system.indexes和testData,而"db.testData.find()"什么也没有产生.
Serilog站点说使用连接字符串"mongo:// mydb/log",但是抛出异常"MongoDB.Driver.dll中发生了'System.FormatException'类型的未处理异常".我在代码中使用的连接字符串在MongoDb站点上指定,网址为http://docs.mongodb.org/manual/reference/connection-string/
如何使用Serilog登录MongoDb?
我使用.Net Core 2.1.我的应用程序使用Entity Framework Core,并具有CoreDbContext从派生的上下文DbContext。
对于单元测试,我使用的内存版本CoreDbContext,从而在我的代码中产生了此代码Startup.cs:
if (useInMemoryDatabase)
{
services.AddDbContext<CoreDbContext>(options =>
options.UseInMemoryDatabase("dbname"));
}
else
{
services
.AddDbContext<CoreDbContext>(options =>
options.UseSqlServer(DefaultDbConnectionString));
}
Run Code Online (Sandbox Code Playgroud)
我也有通过上下文访问数据库的方法。这些有时有时需要知道上下文是否在内存中,因为内存上下文的行为与普通上下文不同:
void AddRecordX(CoreDbContext context)
{
bool contextIsInMemory = .....;
}
Run Code Online (Sandbox Code Playgroud)
如何测试上下文是在内存中还是与真实对象相关联SQL Server database?
entity-framework entity-framework-core entity-framework-core-2.1
鉴于此代码:
var d1 = new { x = 5, y = 88 };
Log.Logger.Information("{d1}", d1);
Log.Logger.Information("{@d1}", d1);
Run Code Online (Sandbox Code Playgroud)
如何在两个Log.Logger.Information(...)行中以不同方式记录d1中的对象?换句话说,在{}之间添加@的影响是什么?
我在"保留对象结构"标题下阅读了https://github.com/serilog/serilog/wiki/Structuredvals,但这对我来说没有意义.
我无法从Cypher查询中检索匹配的关系.
我有这个简单的试用代码:
var movie = client.Create(new Movie { Title = "The Matrix" });
client.Create(new Actor { Name = "Keanu Reeves" },
new ActedIn(movie, new ActedInPayload { Role = "Neo" }));
client.Create(new Actor { Name = "Hugo Weaving" },
new ActedIn(movie, new ActedInPayload { Role = "Agent Smith" }));
var actorsAndRoles = client
.Cypher
.Start(new { movie = movie })
.Match("actor-[r:ACTED_IN]->movie")
.Return((actor, r) => new
{
Actor = actor.As<Node<Actor>>()
// ActedIn = r.As<?????>()
})
.Results;
Run Code Online (Sandbox Code Playgroud)
问题是我无法弄清楚如何施放r(具有匹配的关系).
尝试了各种".As"类型演员,但都没有奏效.转换为关系不起作用,因为我的关系类没有无参数构造函数 - 但是基本类本身没有无参数构造函数,所以不要认为这会起作用.另一方面,转换为RelationshipReference会导致异常.根本不投射(只返回r)会导致"不支持"的异常.
有关此问题的一些相关SO条目,但建议的代码不再有效或已弃用.
如何检索匹配的关系?
.net ×2
serilog ×2
cypher ×1
jsdoc ×1
linq ×1
mongodb ×1
neo4jclient ×1
relationship ×1
sql ×1
typescript ×1