Это пример LINQ-to-SQL? - PullRequest
       12

Это пример LINQ-to-SQL?

1 голос
/ 25 февраля 2009

Я сделал небольшое приложение WPF с базой данных SQL CE.

Я построил следующий код с помощью LINQ для извлечения данных из базы данных, что было на удивление легко. Поэтому я подумал: «Это должно быть LINQ-to-SQL».

Затем я «добавил элемент» и добавил файл .dbml «Классы LINQ-to-SQL», перетащил мою таблицу в конструктор реляционных объектов, но там было сказано: «Выбранный объект использует неподдерживаемый поставщик данных».

Итак, я спросил, действительно ли следующий код на самом деле является LINQ-to-SQL, так как он действительно позволяет мне получать доступ к данным из моего файла базы данных SQL CE, но официально «LINQ-to-SQL» кажется неподдерживаемым для SQL CE.

Так что это следующий "LINQ-to-SQL" или нет?

using System.Linq;
using System.Data.Linq;
using System.Data.Linq.Mapping;
using System.Windows;

namespace TestLinq22
{
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();

            MainDB db = new MainDB(@"Data Source=App_Data\Main.sdf");
            var customers = from c in db.Customers
                            select new {c.FirstName, c.LastName};
            TheListBox.ItemsSource = customers;
        }
    }

    [Database(Name = "MainDB")]
    public class MainDB : DataContext
    {
        public MainDB(string connection) : base(connection) { }
        public Table<Customers> Customers;
    }

    [Table(Name = "Customers")]
    public class Customers
    {
        [Column(DbType = "varchar(100)")]
        public string FirstName;

        [Column(DbType = "varchar(100)")]
        public string LastName;
    }

}

Ответы [ 2 ]

5 голосов
/ 25 февраля 2009

В этой статье MSDN отмечается, что хотя sdf поддерживается средой выполнения LINQ to SQL, она не поддерживается конструктором.

Цитировать:

  • Среда выполнения LINQ to SQL и средство командной строки SQLMetal поддерживают SQL Server Compact 3.5.
  • Конструктор реляционных объектов не поддерживает SQL Server Compact 3.5.
5 голосов
/ 25 февраля 2009

Да, это LINQ to SQL. Он использует System.Data.Linq.DataContext, который является LINQ to SQL. Похоже, что дизайнер не поддерживает вашего провайдера, но сама LINQ to SQL поддерживает.

(Или дизайнер придирчив к вашей строке подключения и справится, если вы ее немного измените. Звучит так же вероятно, как и все ...)

...