首页 > 解决方案 > 如果我使用内部,Couchbase 会将空内容插入服务器,为什么?

问题描述

我创建了一个简单的插入操作来将文档添加到服务器。我的问题是服务器有 id 和空内容。我通过源代码中的教程创建所有员工

这是源代码

var document = new Document<Person>
{
  Id = "P1",
  Content = new Person
  {
      FirstName = "John",
      LastName = "Adams",
      Age = 21
  }
};

var result = bucket.Insert(document);
if (result.Success)
{
  Console.WriteLine("Inserted document '{0}'", document.Id);
}

那是我的(在图片中我展示了我在服务器中得到的东西)

IBucket bucket = await ClusterHelper.GetBucketAsync("new_bucket");

var document = new Document<Person>
        {
            Id = "P1",
            Content = new Person
            {
                Name = "John",
                Surname = "Adams",
                Age = 21
            }
        };

        var result = await bucket.InsertAsync(document);
        if (result.Success)
            Console.WriteLine("Inserted document '{0}'", document.Id);
        else
            Console.WriteLine("Error this document exist");

在此处输入图像描述

我想知道,为什么它不适用于对象人?为什么它会保存空内容?(我以源代码为例,也许我做错了什么?

编辑

public class Person
{
    internal string Name { get; set; }
    internal string Surname { get; set; }
    internal int Age { get; set; }
}

如果我写了一些有趣的事情

var document = new Document<dynamic>
        {
            Id = "dynamic",
            Content = new
            {
                Name = "John",
                Surname = "Adams",
                Age = 21
            }
        };

我接受内容但不舒服(只是我的意思)

在此处输入图像描述

有趣但 GET、UPDATE 也有同样的问题。Get<Person>总是返回Null值。为什么沙发底座有这种奇怪的行为?

重要的

访问修改的问题internal只需要使用public!但是为什么?有人有想法吗?

标签: c#.net-corecouchbase

解决方案


推荐阅读