小编Jos*_*osh的帖子

我错过了一些关于文档数据库的内容吗?

我一直在关注NoSql运动的兴起以及随之而来的mongodb,ravendb等文档数据库的普及.虽然我喜欢这些有很多相关的东西,但我觉得我并不理解一些重要的东西.

假设您正在实现商店应用程序,并且您希望存储在数据库产品中,所有这些产品都有一个唯一的类别.在关系数据库中,这可以通过具有两个表,产品和类别表来完成,并且产品表将具有一个字段(可能称为"category_id"),该字段将引用具有正确类别条目的类别表中的行.这有几个好处,包括不重复数据.

这也意味着,如果拼错了类别名称,例如,您可以更新类别表,然后将其修复,因为这是唯一存在值的地方.

但是,在文档数据库中,这不是它的工作原理.你完全非规范化,意味着在"产品"文档中,你实际上会有一个保存实际类别字符串的值,导致大量重复数据,并且错误更难以纠正.更多地考虑这个问题,是否也意味着运行诸如"给我这个类别的所有产品"之类的查询可能导致没有完整性的结果.

当然,解决这个问题的方法是在文档数据库中重新实现整个"category_id"事物,但是当我想到这一点时,我意识到我应该继续使用关系数据库而不是重新实现它们.

这让我相信我错过了关于文档数据库的一些关键点,这些关键点导致我走上了这条不正确的道路.所以我想把它放到堆栈溢出,我错过了什么?

nosql document-database

29
推荐指数
2
解决办法
2493
查看次数

是否有.NET多态数据框架

我正在开始研究一个新项目,如果有一些方法可以使不同的数据模型具有多态性,那么这个项目会更容易.我正在考虑使用Entity Framework 4.0(当它发布时),但是无法确定它是否真的能够正常工作.

这是基本情景.我实现了一个评论系统,并希望能够将它连接到许多不同类型的模型.也许我想对一个人的个人资料发表评论,并对网页发表评论.我过去这样做的方法是在人员表和评论表之间创建关系,与网页表和评论表之间的关系分开.但是,我认为这会导致数据库中的表结构过于复杂.

如果我能够在我想要注释的对象上添加接口,然后将数据库中的表结构简化为单个关系,那将是最好的.

我遇到的问题是,我似乎不知道正确的术语,以便找到有关如何做这类事情的信息.任何人都可以提供任何帮助将不胜感激.

.net c# polymorphism ado.net database-design

8
推荐指数
1
解决办法
280
查看次数

如何从C#生成数据库表以便对数据库进行版本控制?

目前,通过SQL Server Management程序对数据库进行了更改.如果表更改,则运行sqlmetal以重新生成linqtosql类并继续开发.但是,这会使部署变得困难,因为您必须通过并手动更新部署数据库(以及开发周期中使用的任何其他数据库).如果我们可以使用C#来生成这些更改将会很好,因为它有助于消除人为错误,并具有能够将数据库结构保留在git中的额外好处.现在,数据库的唯一表示形式是生成的linqtosql类.

我一直在寻找一个可以处理这类事情的好库,但主要的解决方案似乎是:保留一个sql生成脚本,或者在可以运行的C#类中嵌入sql以对数据库进行更改.这两种情况似乎都是非常不理想的情况,因为你失去了C#提供的优秀强类型.似乎应该有一种方法来使用纯C#来做到这一点.

我已经看到了使用实体框架和linqtosql从POCO生成数据库这样的事情的暗示,但我很难找到使用它的具体示例.另外,我还没有发现它们是否具有优雅(即数据保留)方式来处理初始表生成后对数据库的更改.

有没有解决这个问题的项目?

.net c# database sql-server

4
推荐指数
1
解决办法
1253
查看次数

db4o,Linq和UUID

显然db2o网站最近重做了,现在旧网址给出了404错误.每当我想我找到答案时,我就会收到404错误.

我有一个简单的db4o数据库,我已经设置了存储人员.

public class Person
{
     public string Firstname { get; set;}
     public string Lastname {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

我已经能够在数据库上运行Linq查询,一切都运行得非常好.我正在网络环境中编程,所以我需要有人从数据库中识别和获取唯一对象,所以我只是将数据库配置为使用UUID.现在问题已经出现了,如何从Linq查询中获取的对象获取UUID信息?

例如,假设我让所有人都存储在数据库中,我需要为每个人生成唯一的URL.我将使用UUID这样做.所以我会运行这个:

var people = (from Person p in db select p).ToList();
Run Code Online (Sandbox Code Playgroud)

然后我将遍历列表

foreach( Person person in people)
{
  DoSomething(person);
}
Run Code Online (Sandbox Code Playgroud)

最好的解决方案是将UUID作为Person类的属性,这样我就可以:

var uuid = person.UUID;
Run Code Online (Sandbox Code Playgroud)

但是,我没有看到这样做的机制.我错过了什么吗?

linq uuid db4o

2
推荐指数
1
解决办法
1364
查看次数

混合Typescript,Knockout,Amplify和RequireJs时的"this"关键字

我有一个mvc应用程序,我在TypeScript中编写客户端代码,以及使用几个众所周知的javascript库,包括knockout,amplifyjs和requirejs.我遇到了预期行为不会发生的情况.

export class OrganizationOverviewViewModel{

    openedAssessments = ko.observableArray();
    availableSurveys = ko.observableArray();

    organizationAgentId = ko.observable();
    organizationName = ko.observable();

    selectedSurvey = ko.observable();

    public addSurvey() {
        if (this.selectedSurvey() === undefined) {
            mh.MessageHub.showError("Please Select a Survey", "what");
        }
        else {
            // we can do the post.
            // get the selected survey
            var surveyId = this.selectedSurvey();
            // call the server to add the survey

            amplify.request("addSurveyToOrganization", {
                "surveyId": surveyId,
                "organizationAgentId": this.organizationAgentId()
            },
            function (data) {
                var context = ko.contextFor($('#mainContent')[0]).$data;
                context.openedAssessments.push({ surveyId: data.SurveyId, SurveyName: data.SurveyName, NumberOfResponses: data.ResponseCount }); …
Run Code Online (Sandbox Code Playgroud)

this knockout.js amplifyjs typescript

1
推荐指数
1
解决办法
1044
查看次数