Linq 2 SQL - использовать идентификатор имени, чем 'Id' - PullRequest
2 голосов
/ 19 апреля 2011

Я создаю базу данных и хочу использовать другое соглашение об именах, отличное от 'Id' для идентификатора таблицы. Например, у меня есть таблица продуктов, и я хочу использовать ProductId в качестве имени первичного ключа. Как мне это сделать?

Когда я генерирую свою базу данных из моего POCO, я получаю ошибку «Не удалось найти ключевой элемент« Id »ключа« Id »для типа« myEntity ». Ключ может быть неправильным или поле или свойство myEntity изменило имена.

Вот моя сущность:

public class Product
{
    [Column(IsPrimaryKey=true, IsDbGenerated=true, AutoSync=AutoSync.OnInsert, Name="ProductId")]
    internal int ProductId{ get; set; }

    [Column (CanBeNull=false)]
    public string Name { get; set; }

    [Column (CanBeNull=false)]
    public DateTime CreatedDate { get; set; }

    [Column (CanBeNull=true)]
    public DateTime? ModifiedDate { get; set; }
}

1 Ответ

1 голос
/ 19 апреля 2011

Является ли Products единственной таблицей, на которую ссылается ваш DataContext? Это работает для меня:

static void Main(string[] args)
{           
   MyDatabase db = new MyDatabase(@"C:\Temp\Database.sdf");
   db.CreateDatabase();
}

public class MyDatabase : DataContext
{
    public Table<Product> Products;
    public MyDatabase(string connection) : base(connection) { }
}

[Table(Name="Products")]
public class Product
{
    [Column(IsPrimaryKey=true, IsDbGenerated=true, AutoSync=AutoSync.OnInsert, Name="ProductId")]
    internal int ProductId{ get; set; }

    [Column (CanBeNull=false)]
    public string Name { get; set; }

    [Column (CanBeNull=false)]
    public DateTime CreatedDate { get; set; }

    [Column (CanBeNull=true)]
    public DateTime? ModifiedDate { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...