首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SqlMetal无法从Sqlite数据库创建DBML

SqlMetal无法从Sqlite数据库创建DBML
EN

Stack Overflow用户
提问于 2009-12-16 22:14:44
回答 1查看 1.7K关注 0票数 1

我正在尝试使用新的Mono2.6DBML工具为一个简单的Sqlite数据库创建SqlMetal文件。模式非常简单,如下所示:

代码语言:javascript
运行
复制
CREATE TABLE Tags (
    Id              INTEGER PRIMARY KEY,
    TagName         TEXT,
    Description     TEXT);
CREATE TABLE Trends (
    TagId           INTEGER NOT NULL,
    Timestamp       DATETIME NOT NULL,
    Value           TEXT,
    PRIMARY KEY (tagid, timestamp));

我正在尝试使用以下内容创建DBML文件:

代码语言:javascript
运行
复制
sqlmetal.exe /conn:"Data Source=MyDatabase.db" /namespace:MyNamespace /provider:Sqlite /dbml:MyDatabase.dbml

我得到以下输出:

代码语言:javascript
运行
复制
>>> Reading schema from SQLite database
<<< Writing file 'MyDatabase.dbml'
sqlmetal failed:System.InvalidOperationException: There was an error reflecting type 'DbLinq.Schema.Dbml.Database'. --->
 System.InvalidOperationException: DbLinq.Schema.Dbml.Database is inaccessible due to its protection level. Only public types can be processed
  at System.Xml.Serialization.ReflectionHelper.CheckSerializableType (System.Type type, Boolean allowPrivateConstructors ) [0x00000] in <filename unknown>:0
  at System.Xml.Serialization.XmlReflectionImporter.ImportClassMapping (System.Xml.Serialization.TypeData typeData, System.Xml.Serialization.XmlRootAttribute root, System.String defaultNamespace) [0x00000] in <filename unknown>:0
  at System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping (System.Xml.Serialization.TypeData typeData, System.Xml.Serialization.XmlRootAttribute root, System.String defaultNamespace) [0x00000] in <filename unknown>:0
  --- End of inner exception stack trace ---
  at System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping (System.Xml.Serialization.TypeData typeData, System.Xml.Serialization.XmlRootAttribute root, System.String defaultNamespace) [0x00000] in <filename unknown>:0
  at System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping (System.Type type, System.Xml.Serialization.XmlRootAttribute root, System.String defaultNamespace) [0x00000] in <filename unknown>:0
  at System.Xml.Serialization.XmlSerializer..ctor (System.Type type, System.Xml.Serialization.XmlAttributeOverrides overrides, System.Type[] extraTypes, System.Xml.Serialization.XmlRootAttribute root, System.String defaultNamespace) [0x00000] in <filename unknown>:0  at System.Xml.Serialization.XmlSerializer..ctor (System.Type type) [0x00000] in <filename unknown>:0
  at DbLinq.Schema.Dbml.DbmlSerializer.Write (System.IO.Stream xmlStream, DbLinq.Schema.Dbml.Database dbml) [0x00000] in <filename unknown>:0
  at DbMetal.Generator.Implementation.Processor.WriteSchema (DbLinq.Schema.Dbml.Database dbSchema, ISchemaLoader schemaLoader, DbMetal.Parameters parameters) [0x00000] in <filename unknown>:0
  at DbMetal.Generator.Implementation.Processor.ProcessSchema (DbMetal.Parameters parameters) [0x00000] in <filename unknown>:0

我可以使用/code选项创建C#代码文件,但在生成DBML时总是失败。

我是遗漏了一个微妙的命令行选项,还是这个新版本的SqlMetal不适用于Sqlite?

EN

回答 1

Stack Overflow用户

发布于 2009-12-17 04:11:09

您会相信我以前没有尝试过生成DBML文件吗?

简而言之:这是你遇到的一个bug,没有解决办法。我已经把它归档为http://code.google.com/p/dblinq2007/issues/detail?id=171了。

更长的版本:这个问题似乎没有一个简单的解决方案(除了“丢弃System.Xml.Serialization"),因为由于显而易见的原因,引用的DbLinq.Schema.Dbml.Database类型不能从System.Data.Linq.dll公开。由于另一个错误,在Linux下构建DbLinq并使用DbMetal.exe的“变通办法”不起作用。

很抱歉给您带来不便。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1914899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档