我创建一个MVC mobile application service
Entity Framework
如何忽略默认的EntityData属性?使用
我已经创建了一个Entity Model
像这样:
http://localhost:3000/tables/Regions
:
public class Regions : EntityData
{
public string Id { get; set; }
public string Name { get; set; }
}
,我创建了一个TableController
所以我通过一个GET请求来查询
返回错误说:
“exceptionMessage”:“无效的列名'Id'。\ r \ n列名无效>'Version'。\ r \ n列名无效'CreatedAt'。\ r \ n列无效 name'UpdatedAt'。”,
展望EntityData
类我可以看到EntityData
类的这些属性:
public abstract class EntityData : ITableData
{
protected EntityData();
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Index(IsClustered = true)]
[TableColumn(TableColumnType.CreatedAt)]
public DateTimeOffset? CreatedAt { get; set; }
[TableColumn(TableColumnType.Deleted)]
public bool Deleted { get; set; }
[Key]
[TableColumn(TableColumnType.Id)]
public string Id { get; set; }
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
[TableColumn(TableColumnType.UpdatedAt)]
public DateTimeOffset? UpdatedAt { get; set; }
[TableColumn(TableColumnType.Version)]
[Timestamp]
public byte[] Version { get; set; }
}
所以生成的查询是
'SELECT
[Extent1].[Id] AS [Id],
[Extent1].[Name] AS [Name],
[Extent1].[Version] AS [Version],
[Extent1].[CreatedAt] AS [CreatedAt],
[Extent1].[UpdatedAt] AS [UpdatedAt],
[Extent1].[Deleted] AS [Deleted]
FROM [dbo].[Region] AS [Extent1]''
哪显然是查询失败的原因。
是否可以排除这些默认EntityData
列,因为它们不在我的表Regions
?
请务必注意,ITableData提供的字段必须支持Azure Mobile客户端SDK。版本用于支持ETag。 UpdatedAt&Version用于支持脱机同步功能,Deleted用于支持多客户端脱机同步场景中的软删除功能。如果您删除这些字段,则无法使用Azure移动客户端SDK。将服务设置为使用“Dynamic Schema”会将字段添加回数据库中。 –
@AdrianHall感谢您的评论。我实际上使用Azure移动客户端SDK。所以你提到它是一件非常好的事情。我将如何设置服务以使用“动态模式”? – user1