Tag: 数据库设计

从本地化数据库获取数据的最佳方法

我创建了表结构,使状态在数据库中本地化: Status {StatusId, Value} — Value in this table is status value in default language StatusTranslation {StatusId, Language, TrasnlationValue} — StatusId and Language are combined key 但是我很难在entity framework中完成这项工作。 当默认languege很容易Status.ToList()但是当我需要翻译时,我传递给get方法de-CH但是我不能返回翻译状态。 使用entity framework映射此图的最佳方法是什么? 我认为我的一些方法适用于这种情况,但最终我发现它们不适用。 这是代码中的对象: public class Status { public int StatusId{ get; set; } public string Value{ get; set; } public virtual ICollection StatusTranslations { get; […]

如何正确地向数据库显示和写入复选框列表? (理论/逻辑帮助)

请注意,我现在拥有的数据库设计完全处于沙盒模式。 什么都没有最终确定。 所有东西(再次是沙盒模式)都在一个表中。 此外,我现在正在寻找编码帮助。 我正在寻找适合这个难题的理论/逻辑方法,所以我可以自己进行编码。 我这样学得更好。 如果我需要编码帮助,我会回到这里寻求进一步的帮助。 我正在为手动创建的表单提交创建一些CheckBoxList中的第一个。 我一直在寻找多种方法来不仅创建所述CheckBoxList而且将其输入数据库。 然而,我面临的挑战(主要是因为我之前没有遇到过这种情况,我想了解这一点)是我不仅要担心在数据库中正确输入项目,而且我最终需要根据这些条目生成报告或制作可打印的表格。 假设我有一个特定类型的烧烤烤架的订单,我需要将此表格发送到全国各地的分销中心。 如果在表格上突出显示,配送中心将需要拉出所述烧烤。 以下是分配中心的CheckBoxList的外观: 所有 达拉斯 迈阿密 洛杉矶 西雅图 纽约 芝加哥 凤凰 蒙特利尔 如果检查了特定的城市(或所有城市),那么配送中心将拉动烧烤架进行装运。 增加的部分是我想: 能够从该数据库创建一个网格视图,用于报告以记录哪个配送中心获得了烧烤订单 能够创建报告,告诉分销中心在给定月份(以及其他报告中)发出烧烤订单。 这就是我现在正在玩的东西。 在我的aspx页面中,我有一个编程的复选框列表,其中所有的配送中心都作为列表项输入,以及“所有”(配送中心)的选项。 我还在此表中创建了一个专用列,其中包含listitem中的所有信息,并为此表编程了sqldataconnection,以便为此目的利用数据库的可编程性。 在将选择内容写入数据库时​​,我最初为每个目标城市创建了一个列,包括“全部”选项。 我只是把选择放在一个单独的专栏中,但是我今天一直在阅读有关数据库规范化的一些信息,前者的选项似乎比后者更好。 对于这种情况,这是正确的做法,特别是如果我需要考虑报告吗? 我是否将CheckBoxList数据放在特定列的一个单元格中? 我是否为每个配送中心创建单独的列? 我甚至在这里正确的轨道?

将导航属性映射到实例var作为外键

我正在使用.Net Framework 4.0开发一个entity framework代码优先(v.4.4.0.0)C#库。 我不知道如何建立零对一的关系。 我的模型如下: 只能由一个用户( StarterUserId )创建Talk 。 Talk只能有一个收件人用户( RecepientUserId )或只有一个组( RecipientGroupId )。 注意 :这意味着如果RecipientGroupId不为null,则RecipientGroupId为null; 如果RecipientGroupId为null,则RecepientUserId不为null。 user可以是零或n个Talks的接收者,但是一个group可以有零个或一个Talk 。 这是Talk课程: [DataContract] public class Talk { [DataMember] public int TalkId { get; set; } [DataMember] public int StarterUserId { get; set; } [DataMember] public int? RecipientUserId { get; set; } [DataMember] [ForeignKey(“RecipientGroup”)] public int? RecipientGroupId […]

在SQL Server 2005 IMAGE列中存储20 Meg文件的最有效方法

我们将文档存储在SQL Server 2005数据库表中,列格式为“Image”。 每次我尝试存储大于1兆的PDF文件时,它都会以某种方式被破坏。 在.NET中是否有任何特别有效的方法可以将大文件(~10megs)序列化并存储到数据库中? [编辑]微软实际上说最大文件大小约为2G可变长度二进制数据从0到2 ^ 31-1(2,147,483,647)字节。 http://msdn.microsoft.com/en-us/library/ms187993.aspx

如何将类映射到数据库表?

我有类,需要按照Class 1制作数据表 public class EventType { public String Id { get; private set; } public int Severity { get; set; } public EventTypeTemplate Template { get; set; } public IDictionary Params { get; set; } public EventType(string id) { Id = id; Params = new Dictionary(); } } 和二等 public class EventTypeTemplate { public String […]

动态创建GridView

我想创建一个显示PDF文件记录的GridView。 这些记录可以附加可由用户自定义的元数据,因此他们可以创建自己的列并在其中输入自己的信息。 然后我希望它显示在GridView中,因此如果列顺序为-1,它们可以对每列和列顺序进行排序,它不会显示在GridView中。 例如,有一个静态表 DocumentsTable: ID int PDF_Folder varchar UserID int 然后还有另一个表,用户可以为其创建自己的列 MetaDataColumns: ID int userid int foreign key KeyName varchar Order int 以及保存值的表 MetaDataValues: ID int UserID int foreign key DocumentID int foreign key MetaDataID int foreign key value varchar(100) 现在的问题是我需要从MetaDataColumn中获取列来创建GridView,然后使用MetaDataValue表中的值填充它。 我最初的计划是有一个动态创建GridView并向其添加列的函数,但是我仍然坚持如何使用MetaDataValue中的值作为列。 或者我可以使用GridView AutoGenerate列,但我需要自定义SQL以显示自定义数据。 我有点不知道如何处理这个问题。 我提出的一种方法是伪代码: private DataTable CreateColumns() { var columns = select […]

在数据库中保存类的最佳方法?

在数据库中表示“类型”的好方法是什么? 我有一个基类Action ,它由许多子类inheritance。 Action具有Id , Name等成员,它们对应于名为action的数据库中的表中的等效列。 所以action表看起来像这样: id | name | type type列表示它是什么动作。 在我的代码中,它们对应于从父Action派生的子类。 现在如何将类的类型保存到数据库中的类型字段 ? db中的type列可以是任何数据类型。 选项: 保存action.GetType().ToString()作为db中的字符串。 通过使用reflection将类型的字符串表示转换为其原始类型,从db获取操作类型。 但如果将来类名改变,这将是有问题的。 创建一个枚举来表示每个子类并通过TypeAttribute装饰,例如: public abstract class Action { public enum Kind { [Type(typeof(ControlAction))] ControlAction = 1, [Type(typeof(UpdateAction))] UpdateAction = 2, etc } public abstract Kind ActionType { get; } } public class ControlAction : Action { […]

对象的MongoDB关系

请原谅我的英语,我仍然想要掌握它。 我已经开始学习MongoDB(来自C#背景),我喜欢MongoDB的想法。 我在互联网上有一些例子。 以流行的博客文章/评论为例。 post没有或与之相关的许多评论。 我创建Post对象,向Post中的IList添加一些Comment对象。 没关系。 我是否只将其添加到MonoDB中的“post”集合中,还是应该有两个集合 – 一个是blog.posts和blog.posts.comments? 我有一个公平复杂的对象模型,最简单的方法是将其视为银行系统 – 我们的是采矿业。 我试图用方括号突出显示表格。 [用户]有一个或多个[帐户]有一个或多个[交易] ,其中只有一个[类型] 。 [Transactions]可以为交易分配一个或多个[Tag] 。 [用户]创建他们自己的[标签]对该用户帐户是唯一的,我们有时需要提供这些标签的报告(例如,5月,标签钻孔费用为123456.78美元)。 对于索引,我会认为分离它们会很好但是我担心从旧的RBDMS时代这个想法是不好的做法。 在某种程度上,它就像博客的例子。 我不确定我是否应该拥有1个[帐户]集合并在那里保留所有信息,或者有一个中间步骤将其拆分为单独的集合。 另一个相关的问题是,当你来回持续时,你通常会收回与该记录相关的所有内容 – 即使不是必需的,还是你限制?

如果EAV是邪恶的,那么动态值的用途是什么?

我需要创建一个数据库,其中Accountgroup表将具有动态字段,以便Accounts可以在需要时输入这些动态字段值。 它可能并不重要,但我正在使用C#与EF和Linq。 这对我来说很难,因为我从来没有做过这样的事情,因为我做了我的研究,每个人都说EAV系统太可怕了, 你应该设计得不同 ,问题是之后没有人告诉 – 怎么样? 所以也许你可以帮助我,告诉我如何在不做EAV的情况下实现类似的东西? 这就是我到目前为止所拥有的。

会计数据库 – 存储交易

您创建一个游戏网站,用户可以在其中购买游戏积分,并将资金存入/存入用户的虚拟账户以进行某些游戏等等。 1 如果你有一个会计师来记录交易,它会被记录下来(可能有点复杂,但你明白了) TRANSACTION PK_ID1 Cash – $10 (System) PK_ID2 Deposit $10 (System) TRANSACTION PK_ID3 Bank Account – $10 (John) PK_ID4 Deposit $10 (John) 2 作为开发人员,您真的需要浪费2个额外的记录吗? 为什么不这样记录呢…(然后你可能会存储资金来自哪里,在同一存款记录下的其他栏目中的状态) TRANSACTION PK_ID1 Cash – $10 (system) PK_ID2 Deposit $10 (John) 选项#1优于选项#2和副签证是否有任何真正的优势? 编辑:修改过的问题,删除了CR,DR并用符号替换。