Database 未存储域主键

Database 未存储域主键,database,xamarin,realm,primary-key,realm-mobile-platform,Database,Xamarin,Realm,Primary Key,Realm Mobile Platform,数据模型: public class Product : RealmObject { [PrimaryKey,JsonProperty(PropertyName = "productId")] public int ProductId { get; set; } [JsonProperty(PropertyName = "parentId")] public int ParentId { get; set; }

数据模型:

public class Product : RealmObject
    {
        [PrimaryKey,JsonProperty(PropertyName = "productId")]
        public int ProductId { get; set; }
        [JsonProperty(PropertyName = "parentId")]
        public int ParentId { get; set; }
        [JsonProperty(PropertyName = "productType")]
        public string ProductType { get; set; }
    }
用于将产品添加到数据库的方法:

public void AddSampleProduct(Product product)
        {
            var _realm = Realm.GetInstance();
            using (var transaction = _realm.BeginWrite())
            {
                var entry = _realm.Add(product);
                transaction.Commit();
            }
        }
用于检索产品的方法:

public Product GetProductById(int id)
        {
            Product product = null;
            var _realm = Realm.GetInstance();
            product = _realm.Find<Product>(id);
            var p = _realm.Find<Product>(id);
            return product;
        }

主键属性的值为0
:是否在代码中的任何位置设置主键?这不是一个自动递增字段。在realm Studio中打开realm文件并查看实际存储的数据:是,我正在设置值。我们正在使用newtonsoft对json进行反序列化,该值是在当时设置的。在将值传递给db之前,已调试并确认已设置了值。您在哪个版本和平台上进行测试?另外,我将使用realm Studio查看您的领域文件,因为如果productid实际上是使用PrimaryKey创建的,那么将不允许有多个带零的记录,否则,如果以后添加它,它将引发需要迁移事件,等等。。您是否尝试从头开始重新创建领域文件,并手动输入id为1的记录,然后使用Find(1)等检索它们。我还尝试添加一项,对值进行硬编码。同样的结果。观察结果是,没有设置任何设置为主键的属性。如果它是一个int变量,那么它的值是0,如果我们定义一个字符串作为主键,那么存储在db中的值是null。将重新检查实际项目并在此处更新。
public List<Product> GetProductList()
        {
            List<Product> productList = new List<Product>();
            var _realm = Realm.GetInstance();
            productList = _realm.All<Product>().ToList();
            return productList;
        }
public class Product : RealmObject
    {
        [PrimaryKey]
        [JsonProperty(PropertyName = "productId")]
        public int ProductId { get; set; }
        [JsonProperty(PropertyName = "parentId")]
        public int ParentId { get; set; }
        [JsonProperty(PropertyName = "productType")]
        public string ProductType { get; set; }
    }