- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
更新:我通过将工作代码复制粘贴到一个新的干净项目中来修复它。我不知道为什么我会遇到那个错误,但只要它消失了
我在弄清楚如何做我想做的事情时遇到了问题。在这个例子中,我有一个商家数据库,我希望能够将场所作为列表添加到数据库中的商家条目中。出于某种原因,我不知道为什么,我可以获取商家,但似乎无法获取我获取的条目的 ID,然后更新它。 (我在更新时也遇到了一些问题,据我所知,我需要我想要的条目的 ID,然后我可以用补丁更新......对吧?)
这是我的 Json 类:
public class Merchant
{
[JsonProperty(PropertyName = "name")]
public string name { get; set; }
[JsonProperty(PropertyName = "venues")]
public List<Venue> venues { get; set; }
}
public class Venue
{
[JsonProperty(PropertyName = "name")]
public string name { get; set; }
[JsonProperty(PropertyName = "tills")]
public List<Till> tills { get; set; }
}
public class Till
{
[JsonProperty(PropertyName = "name")]
public string name { get; set; }
}
这是我的 RavenDB 处理程序类的相关函数:
public List<JObject> QueryFromDb(string query)
{
List<Object> objReturned;
List<JObject> jObjects = new List<JObject>();
using (IDocumentSession session = store.OpenSession())
{
objReturned = session
.Advanced.RawQuery<Object>(query)
.ToList();
}
for (var i = 0; i < objReturned.Count; i++)
{
var json = JsonConvert.SerializeObject(objReturned[i], Formatting.Indented);
jObjects.Add(JObject.Parse( json.ToString()));
}
return jObjects;
}
public String GetJsonFromDB(string query)
{
string returnStr = "";
List<JObject> myResponse = QueryFromDb(query);
for (var i = 0; i < myResponse.Count; i++)
{
var json = JsonConvert.SerializeObject(myResponse[i], Formatting.Indented);
returnStr += json.ToString();
}
return returnStr;
}
这是我试图获取 ravendb 条目的 ID:
public void UpdateMerchantList()
{
merchantGrid.Rows.Clear();
List<JObject> myResponse = ravenDB.QueryFromDb("from Merchants");
for (var i = 0; i < myResponse.Count; i++)
{
var json = JsonConvert.SerializeObject(myResponse[i], Formatting.Indented);
Merchant merchant = new Merchant(json.ToString());
if (myResponse[i].Property("Id") != null) { merchant.MyID = myResponse[i].Property("Id").ToString(); }
merchantGrid.Rows.Add(merchant.MyID, merchant.name);
}
}
出于某种原因,我将这段代码移植到控制台应用程序中,并让它与这段代码一起工作:
List<JObject> result = ravenDb.QueryFromDb("from Merchants");
for(var i = 0; i < result.Count; i++)
{
Console.WriteLine(result[i].Property("Id").ToString());
}
这确实给了我想要的东西:“Id”:“商家/97-A”“ID”:“商家/98-A”“身份证”:“商家/129-A”"id": "merchants/130-A"
但是当我将它移植回我的表单并尝试将其添加到数据 GridView 时,我再也看不到它了。
更新:已经能够将列表添加到控制台应用程序中的商户类别中。这是代码。
public void AddVenue(string idArg,Venue venue)
{
using (IDocumentSession session = store.OpenSession())
{
var merchant = session.Load<Merchant>(idArg);
List<Venue> venuesList = new List<Venue>();
if (merchant.venues == null) { session.Advanced.Patch(merchant, m => m.venues, venuesList); }
else
{
session.Advanced.Patch(merchant,
x => x.venues,
venues => venues.Add(venue));
}
session.SaveChanges();
}
}
只是为了让人们理解我在说什么:这是从表单应用程序输出的 json:
为什么?
当在控制台中使用几乎相同的代码(复制粘贴)时,我得到了这个:
我从一个应用程序获取的数据比另一个应用程序多,我真的非常想要这个 ID。
我想我将把代码重构到一个 wcf 应用程序中。只是因为。也许我会不小心修复它。
最佳答案
您可以直接加载给定类的对象,无需自己处理 JSON(反)序列化,除非有特殊原因。
此外,当您不想加载文档(以节省带宽)时,使用补丁更有用。当您已经加载文档时,您可以简单地更改它并保存更改。
引用如下代码:
public class Merchant
{
// note added Id property
public string Id { get; set; }
[JsonProperty(PropertyName = "name")]
public string name { get; set; }
[JsonProperty(PropertyName = "venues")]
public List<Venue> venues { get; set; }
}
public class Venue
{
[JsonProperty(PropertyName = "name")]
public string name { get; set; }
[JsonProperty(PropertyName = "tills")]
public List<Till> tills { get; set; }
}
public class Till
{
[JsonProperty(PropertyName = "name")]
public string name { get; set; }
}
public void MerchantsTest()
{
using (var store = GetDocumentStore())
{
using (var session = store.OpenSession())
{
session.Store(new Merchant { Id = "merchant-1", name = "merchant1", venues = new List<Venue> { new Venue { name = "venue-1A", tills = new List<Till> { new Till { name = "till-1A-first" } } } } });
session.Store(new Merchant { Id = "merchant-2", name = "merchant2", venues = new List<Venue> { new Venue { name = "venue-2A", tills = new List<Till> { new Till { name = "till-2A-first" } } } } });
session.SaveChanges();
}
using (var session = store.OpenSession())
{
// you can load all merchants
var merchants = session.Query<Merchant>(null, "Merchants").ToList();
// or load specific merchant by ID
var merchant2 = session.Load<Merchant>("merchant-1");
// add a venue to a loaded merchant (not using patch but simply adding the object)
merchant2.venues.Add(new Venue { name = "venue-2B", tills = new List<Till> { new Till { name = "till-2B-first" } } });
session.SaveChanges();
}
}
}
关于c# - 如何添加到 .net 中的 RavenDB List<type>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54576071/
我正在玩Raven DB几天,我想将其用作Web聊天应用程序的存储。我有包含一些用户数据和聊天记录的文档-这是大集合的聊天消息。 每次加载用户文档时,聊天记录也会加载,即使我只需要几个字段,例如:用户
我的实体是: class Resource { string Name; string EmployeeId; } 如何查询多名员工的资源?我尝试了这个: Resource[] Fin
我知道这篇文章的标题会让一些人感到畏缩。我自 2011 年 12 月以来一直在使用 RavenDB,并且逐渐意识到我以不适合使用文档数据库的方式对数据进行建模。首先,我完全明白这一点。其次,考虑到我目
考虑 2 个查询: var test1 = store.OpenSession().Query().Where(x => x.Id == 1).ToList(); var test2 =
我正在运行 RavenDB.Client 2.0.2173-Unstable。我正在创建一个 Multi-Tenancy 系统,作为我注册过程的一部分,我想创建一个新的 Raven 数据库。 我有三行
我正在使用在 Visual Studio 2010 中通过 NuGet 安装的嵌入式 RavenDB => RavenDB-Embedded.1.0.499 包。它正在我阅读完这篇优秀文章后开始的当前
我们在 AWS 上有一个带有集群 RavenDB 服务器 (5.23) 的 DotNet Core API (C#)。创建文档时,Id 具有不同的格式,具体取决于客户端。如果使用 Swagger/Po
我想知道取回搜索记录总数的最佳方法是什么,同时取回第 N 个 128 记录块数据段,这似乎是 RavenDb 运行时强加的上限。 例如给定这个查询,我还需要知道记录的总数。 var bookmarks
我使用的是 RavenDB 2.0.3.0 版。连接调试器后,涉及 RavenDB 的所有内容都运行得非常缓慢。每个查询需要几秒钟才能完成。 如果我在调试器坐在那里时按下暂停键,我总是看到它挂断了以下
我使用以下代码从 RavenDB 中删除文档。在 Raven UI 的底部,我可以看到文档数量从 3,000,000 减少到 2,000,000。但是“数据”文件的大小不会缩小。它总是大约100G。
我想在我的 Raven DB 中轮询新文档。推荐的方法是什么?我可以使用 IndexTimestamp 还是可以依赖文档的顺序? 我想我想分两步完成: 1.检查是否有新的东西,如果有: 1.1。获取最
我已经更改了我的数据模型,并且需要将所有对象的属性更改为 null,因为在我的模型更改后反序列化它们会引发异常。 我猜我可以为每个文档发布一个补丁,但我找不到任何方法来做到这一点,修补某种类型的每个文
有没有办法在进行空间搜索时从 RavenDB 获取距离计算值。我尝试转换建议的 _ = SpatialIndex.Generate(r.Latitude, r.Longitude) 至 距离 = Sp
是否有一种明智的方法来 stub /模拟调用 IDocumentSession.Query() 的结果? ? 我有一个命令,我想验证在对象上调用了方法(即正在测试的“单元”是命令,而不是命令编排的对象
我想在存储在 RavenDB 文档数据库中的两个实体之间有一个引用。由于这不是关系数据库,我知道我应该使用 RavenDBs 文档中描述的非规范化引用技术。虽然起初这看起来不错,但一旦我开始创建一个真
是否可以使用返回单个文档但不是关键的属性从数据存储加载(而不是查询)文档? 在我的场景中,我有用户和品牌。品牌是用户,但用户不一定是品牌。每个品牌都有一个 UserId 属性及其 Id。有没有办法通过
通过官方 RavenDB 阅读一个简单的问题 documentation ,我知道您可以使用客户端 API 函数执行这些操作,但不能使用 RQL,或者无论如何都可以使用 RQL 执行。 最佳答案 您正
我正尝试在 RavenDB 中检索我按 int 列表排序的文档。 Queryable = Queryable.OrderBy(dto => SearchIds.IndexOf(dto.Property
我刚刚让 RavenDB 开始工作。 我意识到我必须启动 RavenDB\packages\RavenDB.1.0.573\server.exe 才能通过以下方式在我的应用程序中访问它: Do
RavenDB 是否有众所周知的做法来检查 RavenDb 的可用性或检查它在任何给定时间的过载程度?我研究了一些 ravendb API 服务。好像没找到关于健康监测的。有没有像官方的 ravend
我是一名优秀的程序员,十分优秀!