dotnetcore / SmartCode

SmartCode = IDataSource -> IBuildTask -> IOutput => Build Everything!!!
Apache License 2.0
572 stars 163 forks source link

pg 数据库增加 postgis 扩展之后报错 #27

Closed beginor closed 5 years ago

beginor commented 5 years ago

最近又要用到这个模板生成了, 针对 pg 数据库启用 postgis 扩展之后, 运行 SmartCode 时报错, 提示如下:

fail: SmartCode.Generator.DbTypeConverter.DefaultDbTypeConverter[0]
      Can not find DatabaseMap:DbProvider:PostgreSql,Language:CSharp,DbType:name!

这个错误可以在 src/SmartCode.Generator/DbTypeConverter/DbTypeMap.xml 中增加对应的数据库类型来解决, 但是项目中没有用到这个 name 数据类型。

经过几百行的输出之后, 再次提示:

dbug: SmartCode.App.PluginManager[0]
      GetPlugin Name:Razor,PluginType:SmartCode.TemplateEngine.ITemplateEngine,ImplType:SmartCode.TemplateEngine.Impl.OfficialRazorTemplateEngine!

Unhandled Exception: System.InvalidOperationException: Sequence contains no elements
   at SmartCode.CLI.Program.Main(String[] args) in /Users/zhang/Projects/smart-code/smart-code/src/SmartCode.CLI/Program.cs:line 53
   at SmartCode.CLI.Program.<Main>(String[] args)

删除 postgis 扩展之后, 则一切正常。

beginor commented 5 years ago

又看了一下,貌似 SmartCode 是先读取全部的表,再进行过滤的, 现在还不确定是否和这个策略有关

RocherKong commented 5 years ago

本地调试下呢

beginor commented 5 years ago

@RocherKong 今天调试了一下, 一个是 ProjectBuilder 中的事件为空时抛出的异常, 这个已经修复了。 另外一个是数据表没有主键的原因, 添加 IgnoreNoPKTable 参数之后解决。