【问题标题】:ActiveModel::Serializer for C# .NETActiveModel::C# .NET 的序列化器
【发布时间】:2015-09-21 03:30:23
【问题描述】:

我喜欢 Rails ActiveModel::Serializer 的工作方式。定义模型序列化器非常简单(ActiveModel::Serializer):

class PostSerializer < ActiveModel::Serializer
  attributes :title, :body

  has_many :comments
end

class CommentSerializer < ActiveModel::Serializer
  attributes :name, :body

  belongs_to :post
end

是否有任何简单的方法来定义模型序列化程序,将属性列入白名单,而不会弄乱我的 Entity Framework 数据库的第一个模型?

【问题讨论】:

  • 你应该创建一个只包含序列化过程中使用的属性的新类。

标签: c# entity-framework serialization


【解决方案1】:

我的理解是 Rails ActiveModel::Serializer 用于序列化为 JSON 数据。 Entity Framework 不用于此目的,它序列化为数据库。

你想使用Json.Net

更新

您可以将JsonIgnore 属性添加到您不想序列化的属性中。

public class Entity
{
   public int ID { get; set; }

   [JsonIgnore]
   public Entity Parent { get; set; }
   ...
}

【讨论】:

  • 是的,我确实使用它。但是当我序列化它时,它会进入无限循环,因为实体是相关的。所以我需要忽略一些属性。为此,我需要创建一个新类并重新定义我希望它序列化的每个模型属性。有没有更简单的方法来做到这一点?
  • 酷。但是当实体框架重新生成我的数据库第一个实体时,它将删除我之前添加的所有属性。有没有办法保留我添加的属性?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-16
  • 1970-01-01
相关资源
最近更新 更多