EF没有按照声明的顺序返回我的实体属性

时间:2015-05-06 21:12:44

标签: entity-framework web-services odata

我正在使用EF和.net 4.5.2开展MVC odata服务。

此服务(Product)的主要实体映射到只有Ids和Names的Product表。然后,我将属性存储在一个单独的表中,其中包含以下列:ProductId,AttributeCd,AttributeValue,如网络模型中所示。

我向我的产品实体添加了一个属性,该属性是由ProductId映射的属性集合。

当我调用该服务时,我可以选择$扩展这些属性,以向我显示每个产品所关联的属性。

到目前为止,一切都很好,但是当我收到json格式的返回数据时,我首先看到扩展属性,最后看到ProductId,ProductNm,尽管这些是在我的实体中反过来声明的。

我有没有办法告诉EF(模型构建器,实体集)我想要在Json中每个ProductId底部显示的那些属性?因为默认情况下没有这样做。

此代码:

产品实体:

public class Product
{
public Product()
{
this.Entities = new HashSet<Attribute>();
}

public Product(int id)
{
ProductId = id;
}

public int ProductId { get; set; }

public string ProductName { get; set; }

public virtual ICollection<Attribute> Attributes { get; set; }

}
}

属性实体:

public class Attribute
{

public Attribute()
{
}

public Attribute(int pid, string attributecd, string attributevalue)
{
ProducId = pid;
AttributeCode = attributecd;
AttributeValue = attributevalue;
}

public int ProductId { get; set; }

public virtual Product product { get; set; }

public string AttributeCode { get; set; }

public string AttributeValue { get; set; }

}
}

产品图谱:

public class ProductMapping : EntityTypeConfiguration<Product>
{

public ProductMapping()
{

this.ToTable("dbo.Products");

this.HasKey(p => p.ProductId);

this.Property(p => p.ProductId)
.IsRequired()
.HasColumnName("ProductId")
.HasColumnType("int");

this.Property(p => p.ProductName)
.IsRequired()
.HasColumnName("ProductNm")
.HasColumnType("varchar")
.HasMaxLegnth(150);

this.HasMany(a => a.Attributes)
.WithRequired(p => p.product)
.HasForeignKey(t => t.ProductId);
}
}

属性映射仅具有ToTable,HasKey和列名称/类型映射。

我的控制器只对entitySet有一个简单的查询,其中productId = productId输入并返回实体产品的IQueryable。

任何帮助将不胜感激!

0 个答案:

没有答案