我正在研究 Sensenet 框架并在我的计算机上成功安装,现在我正在基于这个框架开发我们的网站。
我阅读了 wiki 上的文档并了解了数据库 <-> 属性 <--> 字段 <-> 视图之间的关系(您可以在此链接中看到图片:http ://wiki.sensenet.com/Field__-_for_Developers )。
假设,如果我在 Sensenet 的数据库中添加了一个新表并希望将此表中的所有数据显示到我们的页面,但我不知道如何通过此模型开发流程:数据库 <=> 属性 <=> 字段 <= > 查看。?
你能显示帮助我的步骤吗?
问问题
70 次
1 回答
2
请考虑将您的数据存储在 SenseNet内容存储库中,而不是将自定义表保存在数据库中。使用常规内容项要容易得多,并且您将拥有 repo 提供的所有功能 - 例如索引、权限,当然还有现有的 UI。为此,您必须采取以下步骤:
- 在 SenseNet 中为现有数据库中的每个实体类型定义内容类型(在下面的示例中,这是Car类型)。
- 在要放置内容的内容存储库中创建一个容器(在本例中,这是默认站点下的汽车自定义列表)。
- 使用 SenseNet客户端库创建命令行工具,将现有数据迁移到内容存储库。
要详细查看示例,请查看这篇文章:
该示例的核心实际上是几行代码,它们实际上将内容项保存到内容存储库中(通过 REST API):
using (var conn = new SqlConnection(ConnectionString))
{
await conn.OpenAsync();
using (var command = new SqlCommand("SELECT * FROM Cars", conn))
{
using (var reader = await command.ExecuteReaderAsync())
{
while (await reader.ReadAsync())
{
var id = reader.GetInt32(0);
var make = reader.GetString(1);
var model = reader.GetString(2);
var price = reader.GetInt32(3);
// Build a new content in memory and fill custom metadata fields. No need to create
// strongly typed objects here as the client Content is a dynamic type.
// Parent path is a Content Repository path, e.g. "/Root/Sites/Default_Site/Cars"
dynamic car = Content.CreateNew(ParentPath, "Car", "Car-" + id);
car.Make = make;
car.Model = model;
car.Price = price;
// save it through the HTTP REST API
await car.SaveAsync();
Console.WriteLine("Car-" + id + " saved.");
}
}
}
}
于 2016-10-30T14:25:01.620 回答