1
문제는 첫 번째 개체가 두 번째 개체와 두 번째 개체 사이에 OneToOne 관계를 설정하는 방법을 이해할 수 없다는 것입니다. 첫 번째 링크가 있습니다. 나는 제품과 모델을 생성하고 생성 된 하나 모델의 속성을 "제품"으로 설정하고 저장하면CoolStorage가 일대일 관계를 설정할 수 없습니다.
이[MapTo("Model")]
public class Model : CSObject<Model, int>
{
[OneToOne(LocalKey = "ModelID", ForeignKey = "ModelID")]
public Product Product { get { return (Product)GetField ("Product"); } set { SetField ("Product", value); } }
}
[MapTo("Product")]
public class Product : CSObject<Product, int>
{
[OneToOne(LocalKey = "ProductID", ForeignKey = "ProductID")]
public Model Model { get { return (Model)GetField ("Model"); } set { SetField ("Model", value); } }
}
는 것은이 제품의 "모델"속성이 설정되지 않는 것을 : 여기 코드는 NULL로 유지됩니다. 나는 이미 제품과 모델의 속성 (예 : "ModelID") 모두에 대해 모든 로컬 및 외부 키를 만들려고했지만 문제를 해결하지 못했습니다. 이 일을 올바르게 수행하는 방법은 무엇입니까?
그들 중 하나를 만드는 것 같아요 트릭을 할 것이지만 하나의 개체가 속성에 의해 반환 될 필요가있는 동안 컬렉션을 반환합니다.
[OneToMany]
public CSList<Product> _ProductList { get { return (CSList<Product>)GetField ("_ProductList"); } set { SetField ("_ProductList", value); } }
[NotMapped]
public Product Product {
get {
CSList<Product> list = this._ProductList;
if (list.Count > 0)
return list [0];
return null;
}
set {
if (value != null) {
CSList<Product> list = this._ProductList;
list.RemoveAll();
list.Add (value);
}
}
}
두려워서 작동하지 않습니다. ManyToOne 패턴은 "One"이라는 ID를 가진 "Many"테이블에 열을 보유한다는 의미입니다. 즉 Model 테이블에 ProductID 열이 있어야하며 그 반대의 경우도 마찬가지입니다. Product의 Model 속성을 일부 모델로 설정하면 Product 테이블의 Column "ModelID"가 업데이트되지만 Model 테이블의 "ProductID"열은 그대로 유지됩니다. 더욱이 그러한 접근은 무한 사이클 인 것처럼 저장하려고 할 때 오류를 유발할 수 있습니다. – Danchoys