如何将 SenseNet 框架与我们的数据库一起使用

How to use the SenseNet framework with our Database

我成功安装了SenseNet Framework,在我的电脑上是运行,但是我不知道如何使用这个框架为我们的数据库开发我的私人网站项目以及如何开始开发?你能帮助我吗 ?

非常感谢!

我会试着概述当前的可能性(从 SenseNet 版本 6.5.4 开始,因为不久的将来会有新的选择)。

将 SenseNet 用作独立的 Web 应用程序

这就是您所做的:安装软件包并获得完整的网络应用程序:门户UI 和内容存储库 (db)。您可以在页面上通过 creating a new skin or creating pages and moving portlets around 自定义 GUI。以下是一些入门链接:

关于维护项目(例如备份等),请查看 wiki 上的操作员和开发人员文章 - 或在此处提出具体问题:)。

使用 SenseNet 作为后端服务

开发人员可以在来自 C# 的 OData REST API we offer: you can manage content in the Content Repository through http requests (or using the client SDK 的基础上进行构建。这需要与第一个选项相同的 SenseNet 安装,但您可以保留现有的 ASP.NET 应用程序,只从后端向 SenseNet rest api 发出请求(也可以进行跨站点 ajax 来自 JavaScript 的调用,但在敏感内容的情况下,您必须处理跨站点身份验证。

在 SenseNet 内容存储库之上构建 ASP.NET webforms 或 mvc 应用程序

目前这有点棘手,因为没有针对此场景的 'how to' wiki 文章。基本上,您将能够使用现有的(或新的)ASP.NET webforms 或 MVC 应用程序,并在 Content Repository 上构建作为存储。这样你就可以 放松内置的 UI 和对 repo 进行 REST API 调用的可能性(因为在前面的选项中是可能的),但您仍然可以使用 SenseNet C# api 直接连接到存储库(这称为进程内行为)。

为此,您必须将内置 SenseNet web.config 中的所有内容复制到应用程序的 Web 配置文件中,如果您想在启动时执行一些初始化操作(MVC 或 Web api 路由等),而不是你必须从内置全局继承 class (称为 SenseNetGlobal),实现通常的方法(app start,app end 等)并将其注册到您的网络根目录中的 global.asax 文件中。如果您在 web.config 中设置了正确的连接字符串和所有其他值,您应该能够从现在开始使用 SenseNet api(例如加载和操作内容项、查询存储库)。

编辑:自定义详情tables

自定义数据库tables

无论你走哪条路,你当然可以将自己的自定义tables添加到SenseNet数据库中。在此之前,请考虑将您的对象作为常规 Content 项目存储在内容存储库中,这样您可能会受益于平台的内置功能,例如索引和权限。

但是如果您已经有一个 table 结构想要重用或集成,或者独立于 SN 实现它更容易,您可以将自定义数据存储在同一个数据库中。我们提供了一个 API 来访问数据库,你不必担心连接字符串和其他东西,你可以简单地使用 SqlProcedure SenseNet 帮助程序 class执行直接 SQL 查询。

using (var cmd = new SqlProcedure { CommandText = "SELECT * FROM MyTable WHERE RefId = @MyId", CommandType = CommandType.Text })
{
    cmd.Parameters.Add("@MyId", SqlDbType.Int).Value = myId;

    var result = new List<int>();
    using (var reader = cmd.ExecuteReader())
    {
        while (reader.Read())
            result.Add(reader.GetSafeInt32(0));
        return result;
    }
}

也可以使用 SenseNet 的 内置 ASP.NET 网络表单用户界面来呈现甚至 edit external items(例如在您的自定义 table 中记录) 。该平台(经过少量开发)能够显示具有内置字段控件(例如短文本、下拉列表等)的外部对象,并让用户操作它们,而无需从头开始创建 CRUD 用户界面。

当然,您也可以使用现有的开发技能和首选控件构建自定义 UI。