我正在尝试在Mono中设置NHibernate,以便在SQLite中存储对象.
我已经复制/粘贴了示例配置文件.我只有以下两行代码:
var config = new Configuration();
config.Configure();
Run Code Online (Sandbox Code Playgroud)
这导致以下不符合语法的验证异常:
System.InvalidOperationException:发生了从Finished到Content的验证状态转换的意外尝试.
我不确定问题是什么.如果问题是Mono特定的,那么我想找到一个解决方法.
编辑:
这可能是也可能不是问题,但我已切换到FluentNHibernate进行配置.强烈推荐.
这是我的配置:
this.factory = Fluently.Configure().
Database(SQLiteConfiguration.Standard.UsingFile("foo.db").
ShowSql()).
Mappings(m => m.FluentMappings.AddFromAssemblyOf<Bar>()).
ExposeConfiguration(BuildSchema).
BuildSessionFactory();
Run Code Online (Sandbox Code Playgroud)
BuildSchema看起来像这样:
private static void BuildSchema(Configuration config)
{
new SchemaExport(config).Create(false, true);
}
Run Code Online (Sandbox Code Playgroud)
幸运的是,这很好用,并创建了一个名为foo.db的文件,我可以读写它.不幸的是,每次运行此代码时,foo.db都会被覆盖.如何配置(Fluent)NHibernate只有在文件尚不存在的情况下才能创建文件?
我有一些代码将字符串转储到stdout来检查它们的编码,它看起来像这样:
private void DumpString(string s)
{
System.Console.Write("{0}: ", s);
foreach (byte b in s)
{
System.Console.Write("{0}({1}) ", (char)b, b.ToString("x2"));
}
System.Console.WriteLine();
}
Run Code Online (Sandbox Code Playgroud)
考虑两个字符串,每个字符串显示为"ë",但具有不同的编码.DumpString将产生以下输出:
ë:e(65)(08)
ë:ë(eb)
代码如下所示:
DumpString(string1);
DumpString(string2);
Run Code Online (Sandbox Code Playgroud)
如何使用System.Text.Encoding将string2转换为与string1等效的字节.
Expression<Func<T, object>> selector是我作为参数的选择器.
我的方法是泛型类型,并且假设我想从被调用的类中获取多个属性值.
a =>a.customername 是什么传递给表达式.请解释,是否有可能有多个选择?
例如,我也想要客户地址,两者都是字符串值.
c# ×3
nhibernate ×2
.net ×1
encoding ×1
expression ×1
linq ×1
mono ×1
sqlite ×1
unicode ×1
xsd ×1