DataObjects.Net에는 다음과 같이 표시됩니다. 질의 - 태그 관계를위한 보조 테이블을 포함하여 데이터베이스 스키마가 ORM에 의해 자동으로 생성되기 때문에 이제는 모든 매핑 파일이 있습니다.
태그 클래스 :
[HierachyRoot]
public class Tag : Entity
{
[Field, Key]
public int Id { get; private set; }
[Field(Length = 100, Indexed = true)]
public string Name { get; private set; }
[Field]
public int QuestionsCount { get; set; }
public Tag(string name)
{
Name = name;
}
}
질문 클래스 :
[HierachyRoot]
public class Question : Entity
{
[Field, Key]
public int Id { get; private set; }
[Field]
public EntitySet<Tag> Tags { get; private set; }
// Business methods (can be placed in separate service class)
public void AddTag(string name)
{
var tag = Query.All<Tag>().SingleOrDefault(t => t.Name == name);
if (tag==null)
tag = new Tag(name) { QuestionsCount = 1 }
else
tag.QuestionsCount++;
Tags.Add(tag);
}
public void RemoveTag(string name)
{
var tag = Query.All<Tag>.Single(t => t.Name == name);
tag.QuestionsCount--;
Tags.Remove(tag);
}
}
응용 프로그램 코드 : 우리가 비교하려는 정확히 무엇
using (Session.Open())
using (var transactionScope = Transaction.Open())
{
var question = Query.Single<Question>(questionId);
question.RemoveTag("tag1");
question.RemoveTag("tag2");
question.AddTag("tag3");
question.AddTag("tag4");
transactionScope.Complete();
}
? 비즈니스 모델 선언? 실생활의 비즈니스 메소드 또는 수동으로 할당 된 속성을 찾고 Persist() 메소드를 호출합니까? –