Hei Ricardo,
I am using the implementation that is referenced in the comment above, and
while it works in most cases, there is a failure related to navigation
between related entities.
If I use Northwind sample database where Categories and Products are in
one-to-many relationship, it only works on "one" side, e.g.
writing Categories.Expand("Products") in LinqPad produces correct result.
writing Products.Expand("Category") causes the following error message:
*The type 'Castle.Proxies.CategoriesProxy' is not a complex type or an
entity type.
*
Here are my class definitions:
[DataServiceKey("CategoryID")]
public class Categories
{
public virtual int CategoryID { get; set; }
public virtual string CategoryName { get; set; }
public virtual string Description { get; set; }
public virtual byte[] Picture { get; set; }
public virtual ICollection<Products> Products { get; set; }
}
public class CategoriesMap : ClassMap<Categories>
{
public CategoriesMap()
{
Id(x => x.CategoryID).GeneratedBy.Increment();
Map(x => x.CategoryName).Not.Nullable();
Map(x => x.Description);
Map(x => x.Picture);
HasMany(x => x.Products)
.Table("Products")
.KeyColumn("CategoryID");
}
}
[DataServiceKey("ProductID")]
public class Products
{
public virtual int ProductID { get; set; }
public virtual string ProductName { get; set; }
public virtual int SupplierID { get; set; }
public virtual int CategoryID { get; set; }
public virtual string QuantityPerUnit { get; set; }
public virtual decimal? UnitPrice { get; set; }
public virtual short UnitsInStock { get; set; }
public virtual short UnitsOnOrder { get; set; }
public virtual short ReorderLevel { get; set; }
public virtual bool Discontinued { get; set; }
public virtual Categories Category { get; set; }
public virtual Suppliers Supplier { get; set; }
public virtual ICollection<OrderDetails> OrderDetails { get; set; }
}
public class ProductsMap : ClassMap<Products>
{
public ProductsMap()
{
Id(x => x.ProductID);
Map(x => x.ProductName).Not.Nullable();
Map(x => x.SupplierID);
Map(x => x.CategoryID);
Map(x => x.QuantityPerUnit);
Map(x => x.UnitPrice);
Map(x => x.UnitsInStock);
Map(x => x.UnitsOnOrder);
Map(x => x.ReorderLevel);
Map(x => x.Discontinued).Not.Nullable();
References(x => x.Category)
.Column("CategoryID");
References(x => x.Supplier)
.Column("SupplierID");
HasMany(x => x.OrderDetails)
.Table("[Order Details]")
.KeyColumn("ProductID");
}
}
You say relations must be entities or simple collections of entities.But
"Category" is an entity, what else can it be? I also tried changing from
ICollection to IList, but still the same error on "many" side of the
relation.
Vagif
On Mon, May 9, 2011 at 11:23 AM, Ricardo Peres <[email protected]> wrote:
> @object,
> You also must take some things in consideration:
>
> - Relations must be entities or simple collections of entities
> (IList<T>, IEnumerable<T>), not sets (ISet<T>, HashSet<T>) or maps
> (IDictionary, IDictionary<K, V>, HashTable);
> - The ID property must be called either "ID", or end with "ID", for
> example, "CustomerID", otherwise you must apply the
> DataServiceKeyAttribute to the primary key property;
> - The ID property must have a public setter as well as a public
> getter;
> - The ID property must be of a basic type, such as int or string;
> - The collections to expose must be public properties of type
> IQueryable<T> or IOrderedQueryable<T>.
>
> RP
>
> On May 9, 2:17 am, José F. Romaniello <[email protected]> wrote:
> > I think this is newest:
> >
> > http://weblogs.asp.net/cibrax/archive/2010/08/13/nhibernating-a-wcf-d...
> >
> > 2011/5/7, object <[email protected]>:
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > > Hi,
> >
> > > I am trying to create an OData feed using NHibernate and I am confused
> > > about the information about its support of IUpdatable interface. I've
> > > found posts by Shawn Wildermuth about his implementation of IUpdatable
> > > interface for NH to support WCF Data Services (http://wildermuth.com/
> > > 2008/08/03/Implementing_IUpdatable_%28Part_3%29). There is also
> > > Ayende's post referring to this implementation. In comment to his 3
> > > years old post Shawn suggests downloading NH LINQ to look at the
> > > sources.
> >
> > > But I haven't found anything related to IUpdatable in recent NH
> > > sources. There is not such interface referenced in NH solutions and
> > > projects. And on the net there are some sketches and samples, but no
> > > full implementation.
> >
> > > So if anyone knows the status of support for WCF Data Services by
> > > NHibernate, I will appreciate if you clarify this for me. Right now I
> > > don't really understand the state of this feature.
> >
> > > Thanks in advance.
> >
> > > --
> > > You received this message because you are subscribed to the Google
> Groups
> > > "nhusers" group.
> > > To post to this group, send email to [email protected].
> > > To unsubscribe from this group, send email to
> > > [email protected].
> > > For more options, visit this group at
> > >http://groups.google.com/group/nhusers?hl=en.
> >
> > --
> > Enviado desde mi dispositivo móvil
>
> --
> You received this message because you are subscribed to the Google Groups
> "nhusers" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/nhusers?hl=en.
>
>
--
You received this message because you are subscribed to the Google Groups
"nhusers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/nhusers?hl=en.