我花了相当一段时间来尝试find一个优雅的解决scheme,以应付下面的挑战。 我一直无法find解决问题的办法。 我有一个View,ViewModel和Model的简单设置。 为了解释,我会保持简单。 该Model有一个名为stringTitle的单一属性。 该Model是View的DataContext。 该View有一个TextBlock这就是模型上的Title绑定。 ViewModel有一个名为Save()的方法,将Model保存到Server Server可以推送对Model所做的更改 到现在为止还挺好。 现在为了保持模型与Server同步,我需要做两个调整。 服务器的types并不重要。 只要知道我需要调用Save()以将模型推送到Server. 调整1: Model.Title属性将需要调用RaisePropertyChanged()以将Server对Model所做的更改转换为View 。 这很好,因为Model是View的DataContext 不错。 调整2: 下一步是调用Save()将从View所做的更改保存到Server上的Model 。 这是我卡住的地方。 我可以在ViewModel上处理Model.PropertyChanged事件,该事件在模型被更改时调用Save(),但是这使得它响应服务器所做的更改。 我正在寻找一个优雅和合乎逻辑的解决scheme,如果有意义,我愿意改变我的架构。
我正在为电子商务应用程序devise我的数据库/域,我很难搞清楚如何存储产品。 该网站将出售各种各样的产品,笔,丁字裤,纹身,雨伞,一切。 这些产品中的每一个都会共享一些常见的属性,高度,宽度,长度,重量等,但是一些产品具有特殊的数据。 例如,笔具有不同的墨水颜色和提示/盖子,小册子可以具有不同types的折叠。 到目前为止,我已经想出了20多个额外的属性,但这些属性可能只适用于网站上1%的产品。 所以我想知道是否可以实现一个EAV模型来处理额外的数据。 请记住,当客户在前端查看网站时,会有像eBay和carsales.com.au上的过滤侧边栏。 (所以要记住会有一些查询) 由于系统需要保持灵活性,我认为实现Class Tableinheritance并不现实。 这是因为,沿着轨道,我们可能在将来有更多的属性,新的产品types。 另一件事我已经考虑使用NoSQL数据库(可能是MongoDB),但是我对这些types的数据库没有经验,它甚至可以解决我的问题吗? 审查选项: 具有许多列的单一产品实体 独立属性实体(EAV) 切换到无模式持久性 我正在构build一个具有属性实体的原型,以查看它是多么的灵活,并且testing性能以及查询如何失控。 编辑:当然,我打开任何其他的解决scheme。
与自动递增数字相比,电子邮件地址是不是主要的候选人? 我们的networking应用程序需要电子邮件地址在系统中是唯一的。 所以,我想使用电子邮件地址作为主键。 但是我的同事build议string比较比整数比较慢。 是不是使用电子邮件作为主键的正当理由? 我们正在使用PostgreSQL 。
我试图完成这里解释: 到Facebook和Gmail创build一个线程的私人消息系统 ,但我不完全理解乔尔布朗的答案。 可以请任何人解释。 这是我的数据库表与样本数据的样子(我假设我填写正确的演示目的): 我需要显示一个基于LoginId的线程列表(最新的顶部)在LINQ中查询看起来像什么? (我要求的是在一组消息线程中,给我在每个线程中的最新消息) – 就像这是在Facebook上完成的。 我需要在消息线程(LINQ)中显示所有消息 – >就像在facebook上完成的那样,单击消息,您将看到整个“对话”。 请帮忙! 谢谢 编辑 – >继续乔尔,这是正确的? 乔尔,我有点困惑,请你解释一下(评论/问题以粗体显示): 这里的想法是,每次用户启动一个全新的线程/消息时,都会从THREAD表中的新logging开始。 然后将该用户添加为THREAD_PARTICIPANT,并将该消息的内容添加到指向包含THREAD的MESSAGE。 从MESSAGE到USER的FK表示消息的作者。 LoginId 1向LoginId2发送消息=>将新logging插入到MessageThread表中。 另外,MessageThreadParticipantlogging的MessageThreadId = 1,LoginId = 1(发件人)也被插入一条logging。 并且将新logging插入MessageId = 1,MessageThreadid = 1,SenderLoginId = 1(正确??) 这是我在迭代之后所拥有的: 我觉得我很困惑,因为Loginid 2没有办法知道他有什么信息。 ?? 或者我可能需要插入2条logging到MessageThreadParticipant? (发送者和接收者) – >这种方式都可以看到整个“对话”? 编辑2:乔,我想我可以这样做: SELECT Message.MessageId, Message.CreateDate, Message.Body, Login.Username, Message.SenderLoginId , (SELECT MessageReadState.ReadDate FROM MessageReadState […]
可能重复: 最简单/最干净的方式来实现JavaScript中的单身人士? 我使用这种模式的单身人士,例如单身人士是PlanetEarth: var NAMESPACE = function () { var privateFunction1 = function () { privateFunction2(); }; var privateFunction2 = function () { alert('I\'m private!'); }; var Constructors = {}; Constructors.PlanetEarth = function () { privateFunction1(); privateFunction2(); }; Constructors.PlanetEarth.prototype = { someMethod: function () { if (console && console.log) { console.log('some method'); } } }; […]
我想在PHP中创build一个静态类,它的行为就像在C#中一样,所以 构造函数在第一次调用该类时自动调用 没有实例化要求 这种东西… static class Hello { private static $greeting = 'Hello'; private __construct() { $greeting .= ' There!'; } public static greet(){ echo $greeting; } } Hello::greet(); // Hello There!
我在我的网站上实现了一个类似于一个stackoverflow使用的标记系统,我的问题是 – 什么是最有效的方法来存储标记,以便他们可以被search和过滤? 我的想法是这样的: Table: Items Columns: Item_ID, Title, Content Table: Tags Columns: Title, Item_ID 这太慢了吗? 有没有更好的办法?
我有一个BusinessLayer项目,它具有以下代码。 域对象是FixedBankAccount(它实现了IBankAccount)。 该存储库是作为域对象的公共属性,并作为接口成员。 如何重构它,使存储库不会是一个接口成员 ? 域对象(FixedBankAccount)直接使用存储库来存储数据。 这是否违反单一责任原则? 如何纠正? 注意:存储库模式是使用LINQ to SQL实现的。 编辑 下面给出的代码是更好的方法吗? https://codereview.stackexchange.com/questions/13148/is-it-good-code-to-satisfy-single-responsibility-principle 码 public interface IBankAccount { RepositoryLayer.IRepository<RepositoryLayer.BankAccount> AccountRepository { get; set; } int BankAccountID { get; set; } void FreezeAccount(); } public class FixedBankAccount : IBankAccount { private RepositoryLayer.IRepository<RepositoryLayer.BankAccount> accountRepository; public RepositoryLayer.IRepository<RepositoryLayer.BankAccount> AccountRepository { get { return accountRepository; } set { accountRepository […]
哪一个是最佳实践, 为什么 ? a)types表,代理/人工密钥 外键是从user.type到type.id : b)types表,自然键 外键是从user.type到type.typeName :
在C#中,超类的静态成员被“inheritance”到子类作用域中。 例如: class A { public static int M() { return 1; } } class B : A {} class C : A { public new static int M() { return 2; } } […] AM(); //returns 1 BM(); //returns 1 – this is equivalent to AM() CM(); //returns 2 – this is not equivalent […]