SubSonic生成的DB Schema,二进制类型?

如何使用SubSonic的Schema builder在DB中创建二进制列?

所以今晚我决定潜入SubSonic。 我在这里看到了很多问题,Rob和其他许多人都做出了很好的回应。 我看到SubSonic是一个ORM,通过T4模板,它可以从现有数据库中生成一些非常好用且高效的类。

但是,我想走另一条路。 我有一个非常丰富的域,并希望使用SubSonic和RunMigrations选项从我的域创建我的表adhoc。

所有工作都非常好(甚至编写了我自己的Upgrade()函数,该函数检测代码库是否根据程序集修订号进行了更改,然后将所有对象更新迁移到数据库 – 非常灵活,可以自动升级数据库)。

但是,你如何让SubSonic创建二进制列? 也许我没有按预期使用它(我没有使用Query或SqlQuery,只是SimpleRepository的Linq接口)。 请参阅下文(使用常见的“博客post”示例):

[SubsonicTable] public class Post { [SubSonicPrimaryKey] public Int32 PostID { get; set; } [SubSonicStringLength(1024)] public String Title { get; set; } [SubSonicLongString] public String Body { get; set; } [SubSonicStringLength(5)] public String? LangaugeCode { get; set; } public DateTime? Published { get; set; } public PostType PostType { get; set; } public Int32 PostTypeID { get { return this.PostType.GetHashCode(); } set { Enum.Parse(typeof(PostType), value.ToString()); } } public Byte[] Image { get; set; } } public enum PostType { NotSet = 0 ,BlogPost ,Comment ,Trackback ,Pingback } 

当通过SimpleRepository保存或查询此Post对象时,它缺少两列:PostType(或类型枚举PostType)和Image(类型为byte []数组)。

现在,我发现这里有一个黑客的答案,有人发布了使用Int32 PostTypeID来解决枚举问题。 来吧Rob,SubSonic应该能够支持枚举类型到INT,并从它们返回。 ;)这就是为什么我有PostTypeID,这是正确创建和编写的。

这是为我创建Post表的命令示例,以及插入第一篇文章:

 Post p = new Post(); p.Title = "My Title"; p.Body = "The body of the post."; p.PostType = PostType.BlogPost; var repo = new SimpleRepository(SimpleRepositoryOptions.RunMigrations); repo.Add(p); 

注意:您不应在生产中使用此代码,因为RunMigrations在首次运行时会有许多其他TSQL查询。

您可以通过上面的示例看到,如果它不存在,这将创建Posts表,以及创建列。

但是,这不会创建上面提到的两个列:PostType和Image。

思考? 并提前感谢。

以为我们有一个二进制嗅探器 – 事实certificate它没有做到这一点。 我需要补充一点 – 如果你不介意我们拥有什么并添加它,那就更好了 – 我会爱你的。 在我们的扩展程序中获取战利品 – 你想修改ToDataTable()(我认为)……

如果你没有机会 – 我会在下次启动SimpleRepo时加上这个……

我自己刚刚遇到了Binary专栏问题。 如果你有补丁/修复我愿意测试它。