2010-12-01 4 views
2

아직 ORM에 대한 많은 경험이 없으며, 마지막 ASP.NET 웹 양식 사이트에서 친구가 몇 가지 계산 된 열이 포함 된 매핑 파일 (nHibernate 용)을 만들었습니다. 이 2 개의 열은 내 '사진'모델에 대한 몇 가지 속성에 매핑되었습니다.Entity Framework에서 계산 된 열?

ASP.NET MVC를 사용해도 동일한 작은 웹 사이트를 다시 만들고 있지만 Entity Framework를 지금까지 사용해 왔지만이 동일한 작업을 수행해야하며 계산 된 2 열을 몇 가지로 매핑해야합니다. 내 '사진'모델에 대한 속성은 있지만이 프레임 워크를 사용하여 수행하는 방법을 볼 수 없습니다.

다음은 Photo 객체에 대한 원래의 nHibernate 매핑 파일의 내용 중 일부입니다.

<class xmlns="urn:nhibernate-mapping-2.2" name="Photo" table="Photos"> 
<id name="Id" unsaved-value="0"> 
    <column name="PhotoId" /> 
    <generator class="native" /> 
</id> 
<many-to-one name="Lens" not-null="true"> 
    <column name="LensId" /> 
</many-to-one> 
<property name="Title" not-null="true"> 
    <column name="PhotoTitle" /> 
</property> 
<property name="Description" not-null="true"> 
    <column name="PhotoDescrip" /> 
</property> 
<property name="TotalPhotosInMonth" formula="(SELECT COUNT(p.PhotoId) FROM Photos p WHERE p.DateTimePosted BETWEEN DATEADD(month, DATEDIFF(month, 0, DateTimePosted), 0) AND DATEADD(second, -1, DATEADD(month, DATEDIFF(month, 0, DateTimePosted) + 1, 0)))" /> 
<property name="TotalPhotosInYear" formula="(SELECT COUNT(p.PhotoId) FROM Photos p WHERE p.DateTimePosted BETWEEN DATEADD(year, DATEDIFF(year, 0, DateTimePosted), 0) AND DATEADD(second, -1, DATEADD(year, DATEDIFF(year, 0, DateTimePosted) + 1, 0)))" /> 
</class> 

내가 단순히 DB에있는 사진의 수를 검색 할 어디 궁극적으로 엔티티 프레임 워크를 (사용하여 달성하기 위해 노력하고있어이 매핑 파일의 마지막 2 개 개의 호텔 (TotalPhotosInMonth & TotalPhotosInYear)입니다 해당 월/년).

아무도 Entity Framework를 사용하여이 작업을 수행 할 수 있다고 조언 할 수 있습니까?

답변

0

당신은 DefiningQuery를 사용하여 트릭을 수행하려고 할 수 있습니다

<DefiningQuery> 
    SELECT photoid, lensid, phototitle, photodescrip, (SELECT COUNT(p.PhotoId) FROM Photos p WHERE p.DateTimePosted BETWEEN DATEADD(month, DATEDIFF(month, 0, DateTimePosted), 0) AND DATEADD(second, -1, DATEADD(month, DATEDIFF(month, 0, DateTimePosted) + 1, 0))) as totalphotosinmonth, (SELECT COUNT(p.PhotoId) FROM Photos p WHERE p.DateTimePosted BETWEEN DATEADD(year, DATEDIFF(year, 0, DateTimePosted), 0) AND DATEADD(second, -1, DATEADD(year, DATEDIFF(year, 0, DateTimePosted) + 1, 0))) as totalphotosinyear from photos 
</DefiningQuery> 

는 개체가 읽기 전용 될 것임을은 삽입, 업데이트를 지정하고 저장 프로 시저를 삭제하지 않는 한 유의하시기 바랍니다.

관련 문제