Могу ли я использовать службы данных ADO.NET с источником данных LINQ-to-DataSet?

У нас есть существующее приложение, которое сильно зависит от хранимых процедур и нетипизированных наборов данных. Я хотел бы сохранить эту гибкость, но использовать возможности REST ADO.NET Data Services. Однако когда я пытаюсь использовать следующий код, чтобы предоставить DataSet для служб данных ADO.NET:

namespace NewTechnologyDemo {
public class MyDataSource {
    public IQueryable<DataRow> TheDataSet {
        get {
            using (SqlConnection connection = new SqlConnection("server=MySQLServer;integrated security=sspi;database=MyDatabase")) {
                using (SqlCommand command = new SqlCommand("select * from Orders", connection)) {
                    SqlDataAdapter adapter = new SqlDataAdapter(command);
                    DataSet ds = new DataSet();
                    adapter.Fill(ds);

                    return ds.Tables[0].AsEnumerable().AsQueryable();
                }
            }
        }
    }
}
}

Я получаю сообщение об ошибке:

The server encountered an error processing the request. The exception message is 'On 
data context type 'MyDataSource', there is a top IQueryable property 'TheDataSet' whose 
element type is not an entity type. Make sure that the IQueryable property is of entity 
type or specify the IgnoreProperties attribute on the data context type to ignore this 
property.'.

Я видел здесь, что службы данных ADO.NET хотят, чтобы я украсить объект с помощью DataServiceKey атрибут, но я не думаю, что у меня есть возможность это сделать.

Любые идеи о том, как я могу заставить это работать? Я чувствую, что это должно быть возможно ...


person GuyBehindtheGuy    schedule 27.10.2009    source источник


Ответы (1)


Я сомневаюсь, что DataSet будет иметь достаточно надежные метаданные, чтобы быть полезными, и вам понадобятся классы. Я сделал несколько горшков (начиная здесь ) о том, как заставить его работать с LINQ-to-SQL, что может оказаться полезным.

person Marc Gravell    schedule 27.10.2009
comment
Да, я просмотрел это перед публикацией. Я начинаю понимать вашу точку зрения о необходимости занятий. В противном случае свойства DataRow будут сериализованы вместо содержимого свойства Item, чего я действительно хочу. - person GuyBehindtheGuy; 27.10.2009