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专栏问题。 如果你有补丁/修复我愿意测试它。
- httpModules不能在iis7上运行
- 将PictureBox内的图片移动到另一个PictureBox
- SQL Server:“为程序集’测试’创建程序集失败,因为程序集’测试’格式错误或不是纯.NET程序集。”
- 删除/替换国际字符
- ManagedCuda:IllegalAddress; 在执行内核时
- OnCheckedChanged事件根本没有在GridView中触发
- 在代码隐藏中从Page_Load调用javascript函数
- ASP.NET MVC 2 – 使用UpdateModel和LINQ to Entities(.NET 3.5)时,“无法更新类型’XYZ’的模型”
- 在WinForms中显示gstreamer-sharpvideo流