将XAML存储在数据库糟糕的设计中?

Siy*_*ion 3 c# xaml database-design

例如,假设我正在编写一个允许用户设计自己的名片的应用程序,允许他们将可视对象添加到他们当前正在设计的"模板"中,这些对象中的每一个都绑定到用​​户的各个位置 - 数据.

例如.他们拖动一个"地址框",自动输入用户的地址,然后是"名称文本",它再次自动使用用户定义的名称.

这样做的原因是客户可以创建15个模板,所有模板都有自己的"外观",但是如果他们想要更改地址,他们只需要在一个地方修改它.

所有这些可视对象和模板本身都是用XAML编写的.我需要将这些用户创建的模板存储到数据库中,以便他们可以检索它们并在以后编辑它们.我看到它的方式,我有两个选择:

  1. 将整个模板作为XAML存储在名为"templates"的数据库表中,同时还包含ID和OwnerID.

  2. 为抽象类型的"可视对象"创建一个表.为每个具体类型的可视对象(即"AddressBox")创建一个表,该表将从抽象类型继承并具有每个用户可配置属性(字体大小,x/y坐标等)的字段.最后,创建一个名为template的表,它包含一组可视对象.

应该注意的是,我一直在使用实体框架来设计它,如果我在那里抛出了一些EF关键字,那么道歉!

就个人而言,目前XAML存储可能足以满足我们的要求,但是我所看到的一切似乎都表明这是将数据存储在数据库中的一种非常糟糕的方式.跳到这个35分钟:http://youtu.be/uFLRc6y_O3s是不是这正是他建议不要做?

使用XAML存储,我获得了属性值继承,这可能会使事情稍微容易一些,尽管我不确定用户是否会理解值如何"流"到链中.显然XAML也允许我存储我喜欢的任何属性值; 我不必先将它添加到数据库中.

缺点是,如果全部是XAML,我认为管理数据可能要困难得多; 最坏的情况可能需要检索每一块XAML,解析所有这些,找到我需要更改/查看的值,重新解析,保存更新后的XAML"blob".这显然会导致更大的读/写操作.

Mar*_*ser 5

我想直接存储XAML.原因是您从存储抽象布局中获得的唯一好处是,您可以替换UI框架,并保护自己免受XAML中潜在的重大变化.但是,由于微软推出的一项重大变革会破坏所有控制权,因此您可能会利用一些升级可能性.

对我来说,选项2肯定是更好的版本,但我倾向于是一个"YAGNI"-guy.所以在你需要的时候开发东西,如果你在WPF上就可以了.

马丁,马丁