문제

LINQ를 사용하여 "getTabmenutheme"이라는 기능을 호출하고 있으며 데이터베이스 모델에서 드래그하여 다음과 같은 기능을 생성했습니다.

[Function(Name="dbo.GetTabMenuTheme", IsComposable=true)]
public string GetTabMenuTheme([Parameter(DbType="NVarChar(MAX)")] string state)
{
    return ((string)(this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), state).ReturnValue));
}

다음과 같이 사용하십시오.

from mi in db.ModuleInstances
select db.GetTabMenuTheme(mi.State)

그리고 내 연결은 다음과 같습니다.

Data Source=MyServer;Initial Catalog=MyDB;uid=MyUser;pwd=MyPassword

로컬로 코드를 실행하는 데 아무런 문제가 없습니다 (연결 의미 : 데이터 소스 =.

"dbo"열 또는 사용자 정의 된 함수 또는 "dbo.getTabmenutheme"열을 찾을 수 없거나 이름이 모호합니다.

도움이 되었습니까?

해결책

댓글 편집 : 비 LINQ 데이터베이스 상호 작용으로 돌아갈 수 있습니다.

var com = db.Connection.CreateCommand();
com.CommandText = "select MyUser.GetTabMenuTheme(@state);";
com.Parameters.Add(new SqlParameter("@state", state));
var result = (string) com.ExecuteScalar();

이를 통해 스키마를 선택할 수 있습니다. 코드 샘플의 Myuser입니다.

LINQ 스키마 이름을 동적으로 변경하는 방법을 검색하고 이 블로그 게시물 정확히 설명합니다.

테이블 이름이 LINQ에서 SQL Designer에 의해 생성 된 부분 클래스의 속성에 저장되기 때문에 SEAMS만큼 쉽지 않습니다. Microsoft는 런타임에이를 변경하는 방법이나 방법을 제공하지 않았습니다.

그런 다음 블로거는 런타임에 스키마를 지정하는 XML을로드하는 솔루션을 설명합니다. 매우 복잡하고 느리게 보입니다. 더 간단한 비 LINQ 옵션으로 갈 것입니다.

다른 팁

또는 sqlmetal이있는 맵 파일을 빌드하여 Dinamically로드 할 수 있습니다. CMS를 설치하기 전에 맵 내부 테이블의 스키마 이름을 변경하는 도구를 실행할 수 있습니다. 거기를보세요 : http://www.techwave.it/blog/2010/01/28/linq- to-sql-modificare-dinamamente-il-mapping-mapping-del-database-schema-2/

(이탈리아어이지만 코드 읽기를 이해할 수 있습니다)

로컬 데이터베이스와 원격 데이터베이스에 대해 다른 기본 스키마가 있다고 생각합니다. 로컬 연결 문자열에 따르면 DBO에 기본 스키마가 설정된 로컬 관리자 계정에서 작업하고 있습니다. 한편 SQL Server 인증을 사용하여 원격 데이터베이스에 연결 하고이 사용자의 기본 스키마는 DBO와 다릅니다. 당신은 다음 중 하나입니다 :

  • MyUser의 기본 스키마를 DBO로 변경합니다 (기능을 DBO 스키마에 배포했다고 확신하는 경우)
  • 로컬 데이터베이스에서 대상 스키마를 변경하십시오 (따라서 '생산 서버와 동일). 이 옵션은 귀하 (로컬) 배포 절차 변경을 포함하여 모델의 비트 + 기능 정의 (샘플 다음)에 포함됩니다.

    ([Function(Name="YourSchemaNameHere.GetTabMenuTheme", IsComposable=true)]
    public string GetTabMenuTheme([Parameter(DbType="NVarChar(MAX)")] string state)
    {
        return ((string)(this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), state).ReturnValue));
    }
    
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top