Способ взорвать ваш второй столбик и сохранить первый столбец эффективно flatMap
:
ds.flatMap{ case A(a,b) => b.map((a,_)) }
должен выдать:
+---+---+
| _1| _2|
+---+---+
| 1| A|
| 1| B|
| 2| C|
+---+---+
Можно указать конструктора с ConstructedBy (). Попробуйте это:
ForRequestedType<MyDataContext>().TheDefault.
Is.ConstructedBy(() => new MyDataContext());
Это работало на меня.
Я не уверен, как / если это может быть сделано с быстрым интерфейсом / внутренний DSL. Можно ли однако использовать атрибут, если Вы не суетитесь о загрязнении Вашего домена?
Отметьте своего предпочтительного конструктора со значениями по умолчанию [DefaultConstructor] StructureMap самому жадному конструктору условно (конструктор с большинством параметров).
Я предполагаю, что вам также потребуется установить время жизни объекта (InstanceScope), если вы используете Linq2Sql. Я бы предложил использовать этот код, потому что он дает вам немного больше гибкости.
ForRequestedType< MyDataContext >()
.CacheBy( InstanceScope.PerRequest )
.TheDefault.Is.OfConcreteType< MyDataContext >()
SelectConstructor< MyDataContext >( () => new MyDataContext());
С помощью этого кода вы также можете дополнительно внедрить определения интерфейсов в конструктор MyDataContext, как это
SelectConstructor< MyDataContext >( () => new MyDataContext((IDatabaseFactory)null ));
Просто не забудьте определить конкретный тип с помощью StructureMap для вашего экземпляра IDatabaseFactory.