2009-09-28 2 views

답변

1

"MS_Description"등과 같은 것들이 있습니까? AFAIK가 아닙니다. (데이타베이스 객체 이름과 컬럼 이름을 취하는) 데이타베이스에서 저장소와 대화하는 SP를 작성할 수 있고, 데이타 컨텍스트를 통해 조회 할 수 있습니다. 그러나 아무것도 내장되어 있지 않습니다.

쓸 수도 있습니다. (대신 OO 이름) 데이터베이스 이름을 얻을 수 Expression를 사용하는 몇 가지 코드에 전달하는 식으로 뭔가를 :

public static string GetProperty<TContext, TValue>(
     this TContext ctx, Expression<Func<TContext, TValue>> selector, 
     string propertyName) 
     where TContext : DataContext 
    { 
     MemberExpression me = selector.Body as MemberExpression; 
     if (me == null) throw new InvalidOperationException(); 
     var member = me.Member; 
     var objType = me.Expression.Type; 
     var metaType = ctx.Mapping.GetMetaType(objType); 
     string tableName = metaType.Table.TableName; 
     string columnName = metaType.GetDataMember(member).MappedName; 

     return ctx.GetProperty(tableName, columnName, propertyName); 
    } 

(또는 이와 유사한, 그냥 테스트 DB를 발사 ...)

. 맵핑 된 SPROC를 통해 GetProperty 메소드를 제공하는 곳.

업데이트 : 예, 다소 도움이됩니다. 예 :

string desc = ctx.GetProperty(x => x. DataChanges.First().Change, "MS_Description"); 

First() 고통하지만 개의 선택기를 구비하는 추 미만이고; 그것은 그런 식으로 다시 쓰여질 수 있습니다 :

string desc = ctx.GetProperty(x => x.DataChanges, dc => dc.Change, "MS_Description"); 

당신에게 덜 해킹입니다. 소유자를 tableName에서 나눠야합니다.

+0

당신이 사용하는 표현은 무엇을 의미합니까? – Grant

0

어떤 방식으로 액세스 하시겠습니까? VS 2008 용 내 L2S 추가 기능은 xml 문서 주석 (VS intellisense에 표시되도록)과 설명 속성 (코드에서 액세스 할 수 있음)으로 변환 할 수 있습니다. http://www.huagati.com/dbmltools/에서 데이터베이스 업데이트 문서를 참조하십시오. http://www.huagati.com/dbmltools/ ...

0

sys 뷰에서 필요한 정보를 모두 선택하여 DB에 뷰를 만들 수 있습니다 - sys.extended_properties 뷰 (SQL2005 이상) 및 결합 (sys.tables 및 sys.all_columns 귀하의 경우에는 내가 생각하는) 필요한 다른 사람. 그런 다음 모델의 VS에서 해당 뷰를 가져옵니다.

SMO를 사용하여 테이블, 열 등의 확장 된 속성을 포함하여 모든 SQL Server 메타 데이터에 액세스 할 수 있습니다. LINQ to Objects가 될 것이라고 생각합니다. 그런데이 정보를 쿼리하는 유일한 휴대용 (SQL Server 버전) 방법입니다.

http://msdn.microsoft.com/en-us/library/ms162557.aspx