500 benim Kontrolörleri biriyle biraz Sorunu var atmak.OData Fonksiyonlar
Everytime i 500 atılır parametresi ile bazı işlevi çağırmak için denemek ve ayıklarken i işlev bile çağrılmaz görebilirsiniz.
İlk my WebApiConfig:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
ODataModelBuilder builder = new ODataConventionModelBuilder();
builder.EntitySet<Entity>("Entities");
builder.EntitySet<DataTypes>("DataTypes");
builder.EntitySet<ObjectValue>("ObjectValues");
builder.EntitySet<Attributes>("Attributes");
builder.EntitySet<Objects>("Objects");
builder.Namespace = "EAVService.Controllers";
builder.Action("FullAttributes").Returns<IHttpActionResult>()
.CollectionParameter<Attributes>("Attributes");
builder.Action("FullValues").Returns<IHttpActionResult>()
.CollectionParameter<ObjectValue>("ObjectValue");
config.MapODataServiceRoute(
routeName: "ODataRoute",
routePrefix: "odata",
model: builder.GetEdmModel());
config.Formatters.JsonFormatter.SerializerSettings.TypeNameHandling = TypeNameHandling.Auto;
}
}
Benim Varlık:
[Table("ObjectValue")]
public partial class ObjectValue
{
public ObjectValue()
{
}
[Key]
[Column(Order = 0)]
public int ObjectId { get; set; }
[Key]
[Column(Order = 1)]
[StringLength(50)]
public string Attribute { get; set; }
[StringLength(256)]
public string AttributeVal { get; set; }
public virtual Attributes Attributes { get; set; }
public virtual Objects Objects { get; set; }
}
ve benim Denetleyici:
public class ObjectValuesController : ODataController
{
private EAVModel db;
public ObjectValuesController(IDbConnectionProvider provider)
{
db = new EAVModel(provider.GetDbConnection());
}
// GET: odata/ObjectValues
[EnableQuery]
public IQueryable<ObjectValue> GetObjectValues()
{
IQueryable<ObjectValue> query = db.ObjectValue.AsQueryable();
return query;
}
// GET: odata/ObjectValues(5)
[EnableQuery]
public IQueryable<ObjectValue> GetObjectValues([FromODataUri] string key)
{
IQueryable<ObjectValue> result = db.ObjectValue.Where(objectValue => objectValue.ObjectId == Convert.ToInt32(key)).AsQueryable();
return result;
}
....}
Yöntem ilk Get iyi çalışıyor. ikinci gelince
i Dahili Sunucu Hatası olsun Parametreleri olan alın. bana yanlış ne olabilir bir ipucu verebilir
http://localhost:80/EAVServiceAPI/odata/ObjectValues(1)
birisi? o ObjectValue
nesne üzerinde anahtar uymuyor,
Selamlar Andre
Tamam .. bu yüzden benim yöntemini değiştirdi: Kamu ObjectValue GetObjectValues ([FromODataUri] int ObjectId, string Attribute) {...} işlevi şu işleviyle çağırmayı denediğimde: link Şu anda Hata: { "hata": { "code": "", "message" : "Gereksinimle eşleşen hiçbir HTTP kaynağı bulunamadı. est uri 'http: // localhost/EAVServiceAPI/OData/ObjectValues (Nesne Kimliği = 1, Özellik =' ASD ')' "" innererror. ": { "mesaj":" Hiçbir yönlendirme kongre için bir eylem seçin bulunmuştur . ":"", "StackTrace": "" type '~/EntitySet/anahtarla' şablonla OData yolu "" } } Selamlar Andre –
Eğer gerçekten 2 anahtar istiyorsunuz}? 'ObjectId' bana anahtar gibi geliyor. – TomDoesCode
Evet anahtar istiyorum. ObjectId ve Attribute, farklı tablolardan Yabancı Anahtarlardır. Selamlar Andre –