This is moved from Issue 228 Comment #3.
What steps will reproduce the problem?
1. Take a dbml file which has a //Association/@Cardinality='One' attribute
value, such as the attached nwind.dbml file.
2. Generate source from it:
DbMetal /code:d.cs nwind.dbml
sqlmetal /code:s.cs nwind.dbml
This is with the .NET SqlMetal tool.
3. Compare the output. Of note here is the Categories.Products member:
.NET SqlMetal:
private EntityRef<Products> _products = default(EntityRef<Products>);
// ...
[Association(...)]
public Products Products {
get {return this._products.Entity;}
set {
Products previousValue = this._products.Entity;
if (((previousValue != value)
|| (this._products.HasLoadedOrAssignedValue == false)))
{
this.SendPropertyChanging();
if ((previousValue != null))
{
this._products.Entity = null;
previousValue.Categories = null;
}
this._products.Entity = value;
if ((value != null))
{
value.Categories = this;
}
this.SendPropertyChanged("Products");
}
}
}
DbMetal instead generates an EntitySet<T>, not an EntityRef<T>:
EntitySet<Products> _products;
//...
public EntitySet<Products> Products {
get {return _products;}
set {_products=value;}
}
DbMetal should follow .NET SqlMetal here.
Original issue reported on code.google.com by jonmpr...@gmail.com on 9 Apr 2010 at 7:31
Original issue reported on code.google.com by
jonmpr...@gmail.com
on 9 Apr 2010 at 7:31Attachments: