Я просто пытаюсь изучить ADO.Net Data Services WCF Data Services.
Я только что создал пример программы, в которой у меня есть Entity Data Model базы данных Northwind, и я схватилПродукты, категории и поставщики в моей модели объектов.
Затем я добавил класс, который выглядит как
[DataServiceKey("ProductID")]
public class ProductsService
{
public ProductsService()
{
}
public IQueryable<Product> Products
{
get
{
NORTHWNDEntities db = new NORTHWNDEntities();
return db.Products.AsQueryable();
}
}
}
Затем у меня есть файл службы данных WCF, который выглядит как
public class ProductsDataService : DataService<ProductsService>
{
public static void InitializeService(DataServiceConfiguration config)
{
config.SetEntitySetAccessRule("*", EntitySetRights.All);
config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
}
}
Я знаю, что могу использовать класс NorthwindDataEntities
, тогда он работает, но если я пытаюсь использовать свой класс ProductsService, у меня возникает проблема Ошибка запроса ...
Любая идея, что здесь происходит не так, пожалуйста...
Класс автоматически сгенерированного продукта выглядит следующим образом, я добавил атрибут DataServiceKey ..
[EdmEntityTypeAttribute(NamespaceName="NORTHWNDModel", Name="Product")]
[Serializable()]
[DataContractAttribute(IsReference=true)]
[DataServiceKey("ProductID")]
public partial class Product : EntityObject
{
#region Factory Method
public static Product CreateProduct(global::System.Int32 productID, global::System.String productName, global::System.Boolean discontinued)
{
Product product = new Product();
product.ProductID = productID;
product.ProductName = productName;
product.Discontinued = discontinued;
return product;
}
#endregion
#region Primitive Properties
/// <summary>
/// No Metadata Documentation available.
/// </summary>
[EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
[DataMemberAttribute()]
public global::System.Int32 ProductID
{
get
{
return _ProductID;
}
set
{
if (_ProductID != value)
{
OnProductIDChanging(value);
ReportPropertyChanging("ProductID");
_ProductID = StructuralObject.SetValidValue(value);
ReportPropertyChanged("ProductID");
OnProductIDChanged();
}
}
}
private global::System.Int32 _ProductID;
partial void OnProductIDChanging(global::System.Int32 value);
partial void OnProductIDChanged();
/// <summary>
/// No Metadata Documentation available.
/// </summary>
[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
[DataMemberAttribute()]
public global::System.String ProductName
{
get
{
return _ProductName;
}
set
{
OnProductNameChanging(value);
ReportPropertyChanging("ProductName");
_ProductName = StructuralObject.SetValidValue(value, false);
ReportPropertyChanged("ProductName");
OnProductNameChanged();
}
}
private global::System.String _ProductName;
partial void OnProductNameChanging(global::System.String value);
partial void OnProductNameChanged();
/// <summary>
/// No Metadata Documentation available.
/// </summary>
[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
[DataMemberAttribute()]
public Nullable<global::System.Int32> SupplierID
{
get
{
return _SupplierID;
}
set
{
OnSupplierIDChanging(value);
ReportPropertyChanging("SupplierID");
_SupplierID = StructuralObject.SetValidValue(value);
ReportPropertyChanged("SupplierID");
OnSupplierIDChanged();
}
}
private Nullable<global::System.Int32> _SupplierID;
partial void OnSupplierIDChanging(Nullable<global::System.Int32> value);
partial void OnSupplierIDChanged();
/// <summary>
/// No Metadata Documentation available.
/// </summary>
[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
[DataMemberAttribute()]
public Nullable<global::System.Int32> CategoryID
{
get
{
return _CategoryID;
}
set
{
OnCategoryIDChanging(value);
ReportPropertyChanging("CategoryID");
_CategoryID = StructuralObject.SetValidValue(value);
ReportPropertyChanged("CategoryID");
OnCategoryIDChanged();
}
}
private Nullable<global::System.Int32> _CategoryID;
partial void OnCategoryIDChanging(Nullable<global::System.Int32> value);
partial void OnCategoryIDChanged();
/// <summary>
/// No Metadata Documentation available.
/// </summary>
[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
[DataMemberAttribute()]
public global::System.String QuantityPerUnit
{
get
{
return _QuantityPerUnit;
}
set
{
OnQuantityPerUnitChanging(value);
ReportPropertyChanging("QuantityPerUnit");
_QuantityPerUnit = StructuralObject.SetValidValue(value, true);
ReportPropertyChanged("QuantityPerUnit");
OnQuantityPerUnitChanged();
}
}
private global::System.String _QuantityPerUnit;
partial void OnQuantityPerUnitChanging(global::System.String value);
partial void OnQuantityPerUnitChanged();
/// <summary>
/// No Metadata Documentation available.
/// </summary>
[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
[DataMemberAttribute()]
public Nullable<global::System.Decimal> UnitPrice
{
get
{
return _UnitPrice;
}
set
{
OnUnitPriceChanging(value);
ReportPropertyChanging("UnitPrice");
_UnitPrice = StructuralObject.SetValidValue(value);
ReportPropertyChanged("UnitPrice");
OnUnitPriceChanged();
}
}
private Nullable<global::System.Decimal> _UnitPrice;
partial void OnUnitPriceChanging(Nullable<global::System.Decimal> value);
partial void OnUnitPriceChanged();
/// <summary>
/// No Metadata Documentation available.
/// </summary>
[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
[DataMemberAttribute()]
public Nullable<global::System.Int16> UnitsInStock
{
get
{
return _UnitsInStock;
}
set
{
OnUnitsInStockChanging(value);
ReportPropertyChanging("UnitsInStock");
_UnitsInStock = StructuralObject.SetValidValue(value);
ReportPropertyChanged("UnitsInStock");
OnUnitsInStockChanged();
}
}
private Nullable<global::System.Int16> _UnitsInStock;
partial void OnUnitsInStockChanging(Nullable<global::System.Int16> value);
partial void OnUnitsInStockChanged();
/// <summary>
/// No Metadata Documentation available.
/// </summary>
[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
[DataMemberAttribute()]
public Nullable<global::System.Int16> UnitsOnOrder
{
get
{
return _UnitsOnOrder;
}
set
{
OnUnitsOnOrderChanging(value);
ReportPropertyChanging("UnitsOnOrder");
_UnitsOnOrder = StructuralObject.SetValidValue(value);
ReportPropertyChanged("UnitsOnOrder");
OnUnitsOnOrderChanged();
}
}
private Nullable<global::System.Int16> _UnitsOnOrder;
partial void OnUnitsOnOrderChanging(Nullable<global::System.Int16> value);
partial void OnUnitsOnOrderChanged();
/// <summary>
/// No Metadata Documentation available.
/// </summary>
[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
[DataMemberAttribute()]
public Nullable<global::System.Int16> ReorderLevel
{
get
{
return _ReorderLevel;
}
set
{
OnReorderLevelChanging(value);
ReportPropertyChanging("ReorderLevel");
_ReorderLevel = StructuralObject.SetValidValue(value);
ReportPropertyChanged("ReorderLevel");
OnReorderLevelChanged();
}
}
private Nullable<global::System.Int16> _ReorderLevel;
partial void OnReorderLevelChanging(Nullable<global::System.Int16> value);
partial void OnReorderLevelChanged();
/// <summary>
/// No Metadata Documentation available.
/// </summary>
[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
[DataMemberAttribute()]
public global::System.Boolean Discontinued
{
get
{
return _Discontinued;
}
set
{
OnDiscontinuedChanging(value);
ReportPropertyChanging("Discontinued");
_Discontinued = StructuralObject.SetValidValue(value);
ReportPropertyChanged("Discontinued");
OnDiscontinuedChanged();
}
}
private global::System.Boolean _Discontinued;
partial void OnDiscontinuedChanging(global::System.Boolean value);
partial void OnDiscontinuedChanged();
#endregion
#region Navigation Properties
/// <summary>
/// No Metadata Documentation available.
/// </summary>
[XmlIgnoreAttribute()]
[SoapIgnoreAttribute()]
[DataMemberAttribute()]
[EdmRelationshipNavigationPropertyAttribute("NORTHWNDModel", "FK_Products_Categories", "Categories")]
public Category Category
{
get
{
return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Category>("NORTHWNDModel.FK_Products_Categories", "Categories").Value;
}
set
{
((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Category>("NORTHWNDModel.FK_Products_Categories", "Categories").Value = value;
}
}
/// <summary>
/// No Metadata Documentation available.
/// </summary>
[BrowsableAttribute(false)]
[DataMemberAttribute()]
public EntityReference<Category> CategoryReference
{
get
{
return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Category>("NORTHWNDModel.FK_Products_Categories", "Categories");
}
set
{
if ((value != null))
{
((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Category>("NORTHWNDModel.FK_Products_Categories", "Categories", value);
}
}
}
/// <summary>
/// No Metadata Documentation available.
/// </summary>
[XmlIgnoreAttribute()]
[SoapIgnoreAttribute()]
[DataMemberAttribute()]
[EdmRelationshipNavigationPropertyAttribute("NORTHWNDModel", "FK_Order_Details_Products", "Order_Details")]
public EntityCollection<Order_Detail> Order_Details
{
get
{
return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedCollection<Order_Detail>("NORTHWNDModel.FK_Order_Details_Products", "Order_Details");
}
set
{
if ((value != null))
{
((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedCollection<Order_Detail>("NORTHWNDModel.FK_Order_Details_Products", "Order_Details", value);
}
}
}
/// <summary>
/// No Metadata Documentation available.
/// </summary>
[XmlIgnoreAttribute()]
[SoapIgnoreAttribute()]
[DataMemberAttribute()]
[EdmRelationshipNavigationPropertyAttribute("NORTHWNDModel", "FK_Products_Suppliers", "Suppliers")]
public Supplier Supplier
{
get
{
return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Supplier>("NORTHWNDModel.FK_Products_Suppliers", "Suppliers").Value;
}
set
{
((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Supplier>("NORTHWNDModel.FK_Products_Suppliers", "Suppliers").Value = value;
}
}
/// <summary>
/// No Metadata Documentation available.
/// </summary>
[BrowsableAttribute(false)]
[DataMemberAttribute()]
public EntityReference<Supplier> SupplierReference
{
get
{
return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Supplier>("NORTHWNDModel.FK_Products_Suppliers", "Suppliers");
}
set
{
if ((value != null))
{
((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Supplier>("NORTHWNDModel.FK_Products_Suppliers", "Suppliers", value);
}
}
}
#endregion
}