You can use Entity Framework. It can solve many of your problem if possible.
for your listed problem , ScreenPlay and ScreenPlayWriters has 1 :m relationships
so something like below in which one screenplay object can contain a list of writers
public class ScreenPlay
{
public IList<ScreenPlayWriter> Writers {get;set}
}
public class ScreenPlayWriter
{
}