現在、odata デモを起動して実行しようとしていますが、次のエラーが表示されます。
'データ コンテキスト タイプ 'TweetPicContext' には、要素タイプがエンティティ タイプではない最上位の IQueryable プロパティ 'Users' があります。IQueryable プロパティがエンティティ タイプであることを確認するか、データ コンテキスト タイプで IgnoreProperties 属性を指定して、このプロパティを無視します。
厄介なのは、私のコードがほとんど既存のプロジェクトのカット アンド ペーストであるということですが、明らかに何かがおかしくなっています...
以前の質問/回答を見ると、一般的な回答はDataServiceKey
属性のようですが、私はすでにそれを使用しています。
私が間違っているところに何かアイデアはありますか?
これは私のデータコンテキストです:
public class TweetPicContext : DbContext
{
public DbSet<User> Users { get; set; }
public DbSet<Picture> Pictures { get; set; }
}
これは私のユーザーデータクラスです:
[DataServiceKey("UserID")]
public class User
{
[Key]
public int UserID { get; set; }
public string Name { get; set; }
public string TwitterHandle { get; set; }
public string TwitterIconUrl { get; set; }
public int TwitterId { get; set; }
public string TwitterAuthorizationToken { get; set; }
public string TwitterAuthorizationTokenSecret { get; set; }
public DateTime DateJoinedUtc { get; set; }
public string UniqueDeviceToken { get; set; }
public virtual ICollection<Picture> Pictures { get; set; }
public User()
{
DateJoinedUtc = DateTime.UtcNow;
UniqueDeviceToken = Guid.NewGuid().ToString("N");
}
}
これは私のユーザーサービスです:
[ServiceBehavior(IncludeExceptionDetailInFaults = true)]
public class TweetPicOData : DataService<TweetPicContext>
{
// This method is called only once to initialize service-wide policies.
public static void InitializeService(IDataServiceConfiguration config)
{
config.SetEntitySetAccessRule("Users", EntitySetRights.AllRead);
config.SetEntitySetAccessRule("Pictures", EntitySetRights.AllRead);
config.UseVerboseErrors = true;
}
// see http://romiller.com/2010/07/19/ef-ctp4-tips-tricks-wcf-data-service-on-dbcontext/
protected override TweetPicContext CreateDataSource()
{
var ctx = base.CreateDataSource();
// Disable proxy object creation.
ctx.Configuration.ProxyCreationEnabled = false;
return ctx;
}
}