ASP.NET MVC Как получить доступ к Entity Framework, сгенерированный иностранным ключом?C#

Место общения программистов C#
Ответить
Anonymous
 ASP.NET MVC Как получить доступ к Entity Framework, сгенерированный иностранным ключом?

Сообщение Anonymous »

имеет много отношений с самим собой. Я сохраняю эти идентификаторы в классе с названием AngianGersion с обоими столбцами идентификатора.

Код: Выделить всё

public class Song
{
public int Id { get; set; }

public string AudioName { get; set; }

public string ArtistName { get; set; }

...

public virtual ICollection SimilarVersions { get; set; } = new List();
}

public class SimilarVersion
{
public int Id { get; set; }

public int? Song_Id1 { get; set; }
}
< /code>
Просмотреть модели: < /p>
public class SongDto
{
public int Id { get; set; }

public string AudioName { get; set; }

public string ArtistName { get; set; }

...

public ICollection SimilarSongDtos { get; set; } = new List();
}

public class SimilarSongDto
{
public int Id { get; set; }

public string AudioName { get; set; }

public string ArtistName { get; set; }

...
}
Таблица аналогично в моей базе данных теперь имеет идентификатор ,,

Код: Выделить всё

Song_Id1
, как ef сгенерировал song_id. Как мне использовать этот сгенерированный столбец EF в моем коде? < /P>

Код: Выделить всё

_similarVersionService.GetSimiliarVersion().Song_Id
даст мне ошибку, потому что в классе нет свойства, называемого. Я мог бы вручную добавить его в класс, как я сделал с song_id1 и удалить коллекцию из другого класса, но я думаю, что должен делать что -то не так. Я был бы открыт для лучшего способа сопоставления этого. набор; } и он только что сделал еще один столбец в моей таблице под названием song_id2 .

Код: Выделить всё

public ActionResult Song(int id)
{
//Map the domainModel to songViewModel
var songDto = Mapper.Map(_songService.GetSong(id));

//Get all of the songs where the id == the Song_Id column in similar version table
var songs = _songService.GetSongs().ToList()
.Where(x => x.SimilarVersions.Any(z => z.Song_Id == songDto.Id))
.ToList(); //z.Song_Id no definition found

//Map the Song domain to SimilarSong ViewModel and assign it to the songDto to be passed to the view
songDto.SimilarSongDtos = Mapper.Map(songs);

return View(songDto);
}
< /code>
[b] Редактировать. Попытка добавить в строку на основе Admir Ответ: [/b] 
var songToUpload = new Song
{
AudioName = uploadSongDtos[i].AudioName.Trim(),
ArtistName = uploadSongDtos[i].ArtistName,
};

foreach (var compareAgainstString in _songService.GetSongs().ToDictionary(x => x.Id, x => x.AudioName))
{
var score = SearchContext.Levenshtein.iLD(songToUpload.AudioName, compareAgainstString.Value);

//Don't add the current song
if (score < 50 && songToUpload.Id != compareAgainstString.Key)
songToUpload.SimilarVersionsWhereSimilar.Add(new SimilarVersion { SimilarId = compareAgainstString.Key });
}
is riginalid , так и аналогично назначаются для того, что идентификатор songtoupload.id дается отношение, которое мы определили в моделях, что является правильным для исходного , но он также переосмысливает мой пользовательский набор, аналогичный выше. Как я могу это остановить?

Подробнее здесь: https://stackoverflow.com/questions/373 ... oreign-key
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»