문제

LINQ] [1]에 대한 비디오를보고 문제가 발생했습니다. 이 비디오에서 Mike는 데이터베이스 이름에 대한 몇 가지 사용자 정의 속성을 사용하며 이는 나에게는 효과가 없습니다.

내 코드 (잘 작동) :

class MyContext : DataContext
{
    public MyContext(string conStr) : base(conStr)
    {
    }
}

class Program
{
    static void Main(string[] args)
    {
        MyContext ctx = new MyContext("server=.;database=AdventureWorks;Integrated Security=SSPI");
        Console.WriteLine(ctx.Connection.ConnectionString);
        ctx.ExecuteCommand("insert into _table (a, b) select {0}, {1}", "5", "B");

        Console.WriteLine("That's it!");
        Console.ReadLine();
    }
}

내가 원하는 방법 (Class MyContext 이전에 객체 CTX를 작성하는 데있어 누락 된 데이터베이스 매개 변수와 데이터베이스 이름에 대한 추가 사용자 정의 속성을 확인하십시오) :

[Database(Name="AdventureWorks")]
class MyContext : DataContext
{
    public MyContext(string conStr) : base(conStr)
    {
    }
}

class Program
{
    static void Main(string[] args)
    {
        MyContext ctx = new MyContext("server=.;Integrated Security=SSPI");
        Console.WriteLine(ctx.Connection.ConnectionString);
        ctx.ExecuteCommand("insert into _table (a, b) select {0}, {1}", "5", "B");

        Console.WriteLine("That's it!");
        Console.ReadLine();
    }
}

이것은 데이터베이스 이름을 정의하지 않는 것처럼 예외 '유효하지 않은 개체 이름 _table'을 던집니다. 내가 뭔가를 놓치고 있습니까? 사용자 정의 속성을 사용한 것은 처음입니다.

도움이 되었습니까?

해결책

여전히 속성을 읽어야합니다. MyContextConstructor의 값을 구문 분석하려면 반사를 사용해야합니다.

다른 팁

디자이너를 사용하여 VS에서 만든 컨텍스트를 살펴보면 수업에는 정적 멤버가 있습니다.

private static System.Data.Linq.Mapping.MappingSource mappingSource = new AttributeMappingSource();

여기서 문맥 클래스의 시작은 다음과 같습니다.

 [Database(Name = "Blah")]
    public partial class TestDataContext : System.Data.Linq.DataContext
    {

        private static System.Data.Linq.Mapping.MappingSource mappingSource = new AttributeMappingSource();

    #region Extensibility Method Definitions
    partial void OnCreated();
    partial void InsertAdmin(Admin instance);
    partial void UpdateAdmin(Admin instance);
    partial void DeleteAdmin(Admin instance);
    partial void InsertUser(User instance);
    partial void UpdateUser(User instance);
    partial void DeleteUser(User instance);
    #endregion

        public TestDataContext() : 
                base(global::TestStuff.Properties.Settings.Default.FraudAnalystConnectionString, mappingSource)
        {
            OnCreated();
        }

        public TestDataContext(string connection) : 
                base(connection, mappingSource)
        {
            OnCreated();
        }

        public TestDataContext(System.Data.IDbConnection connection) : 
                base(connection, mappingSource)
        {
            OnCreated();
        }

        public TestDataContext(string connection, System.Data.Linq.Mapping.MappingSource mappingSource) : 
                base(connection, mappingSource)
        {
            OnCreated();
        }

        public TestDataContext(System.Data.IDbConnection connection, System.Data.Linq.Mapping.MappingSource mappingSource) : 
                base(connection, mappingSource)
        {
            OnCreated();
        }

그것은 단지 생성자 일뿐입니다 ... 전체 클래스가 아닙니다 ... 그러나 LINQ에서 SQL 클래스 템플릿을 작성하기로 선택한 후 서버 탐색기에서 테이블을 드래그하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top