sở hữu kết nối trong TableAdapters được định nghĩa là nội.
internal global::System.Data.SqlClient.SqlConnection Connection
Vì vậy, trong trường hợp TypedDataset của bạn không có trong lắp ráp giống như cửa sổ chính của bạn hình thức ứng dụng, bạn sẽ không thể sở hữu kết nối truy cập. Vấn đề này có thể bật lên sau khi bạn refactor mã bộ dữ liệu của bạn và di chuyển nó vào một dự án riêng biệt mà sẽ sản xuất lắp ráp độc lập của riêng mình.
Để giải quyết vấn đề này, bạn có thể thực hiện như được đề cập bên dưới.
tạo một phần lớp cho TableAdapter của bạn và thêm một hàm tạo khác bên cạnh hàm tạo tham số công khai mặc định. Giả sử loại TableAdapter là MyTableAdapter
public partial class MyTableAdapter
{
public MyTableAdapter(SqlConnection connection)
{
thisSetConnection(connection);
this.ClearBeforeFill = true;
}
public void SetConnection(SqlConnection connection)
{
this._connection = connection;
}
}
Bạn sẽ cần thực hiện việc này cho nhiều như TableAdapters bạn có trong dự án của mình. TableAdapter không có bất kỳ lớp cơ sở chung nào nhưng cảm ơn rằng chúng được khai báo là các lớp một phần vì vậy chúng ta có thể thực hiện nó theo cách đã đề cập ở trên.
Bây giờ khi chạy, bạn có thể tạo một thể hiện của TableAdapter của bạn như thế này ..
SqlConnection connection;
//create the connection here at runtime..
MyTableAdapter adapter = new MyTableAdapter(connection);
hoặc thậm chí có thể được gán nó sau này sau khi bạn tạo ra các ví dụ với parameterless mặc định constructor nào TableAdapter ..
SqlConnection connection;
//create the connection here at runtime..
MyTableAdapter adapter = new MyTableAdapter();
adapter.(connection);
Nguồn
2010-05-27 08:13:53
Do VS2010 khả năng hiển thị của Kết nối có thể là pecified (ví dụ: công cộng) và một lớp cơ sở cho DataTableAdapters tạo ra có thể chỉ định ... (có nghĩa là, bài đăng này chủ yếu liên quan đến VS2008 và các vấn đề trước :-) –